博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark编程基础
阅读量:6307 次
发布时间:2019-06-22

本文共 2857 字,大约阅读时间需要 9 分钟。

hot3.png

1、什么是Spark RDD	a. Spark RDD is immutable(不可变)	b. Spark RDD is distributable(分布式)	c. Spark RDD lives in memory(驻内存)	d. Spark RDD is strongly typed(强类型)2、开启Spark监控(3种方式,优先级:c > b > a)	a. 修改$SPARK_HOME/conf/spark-defaults.conf		spark.eventLog.enabled           true		spark.eventLog.dir               hdfs://hadoop.master:9000/user/centos/spark/event_log	b. 使用./spark-shell(或./spark-submit)命令		./spark-shell --master spark://spark.master:7077 --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://hadoop.master:9000/user/centos/spark/event_log	c. 使用编码方式		new SparkConf().set(key, value)3、Spark-Shell交互模式(或IDEA等)下设置控制台日志输出	import org.apache.log4j.{Level, Logger}	Logger.getLogger("org.apache.spark").setLevel(Level.WARN)	Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF)4、Spark简单使用	val acTransList = Array("SB10001,1000", "SB10002,1200", "SB10003,8000", "SB10004,400", "SB10005,300", "SB10006,10000", "SB10007,500", "SB10008,56", "SB10009,30","SB10010,7000", "CR10001,7000", "SB10002,-10")		val acTransRDD = sc.parallelize(acTransList).map(_.split(",")).map(x => (x(0), x(1).toDouble))	acTransRDD.collect	val goodTransRecords = acTransRDD.filter( _._2.toDouble > 0).filter(_._1.startsWith("SB"))	goodTransRecords.collect	val sumAmount = goodTransRecords.map(_._2.toDouble).reduce(_ + _)	val maxAmount = goodTransRecords.map(_._2.toDouble).reduce((a, b) => if (a > b) a else b)	val minAmount = goodTransRecords.map(_._2.toDouble).reduce((a, b) => if (a < b) a else b)	val highValueTransRecords = goodTransRecords.filter(_._2.toDouble > 1000)	highValueTransRecords.collect	val badAmountLambda = (trans: (String, Double)) => trans._2 <= 0	val badAmountRecords = acTransRDD.filter(badAmountLambda)	badAmountRecords.collect	val badAcNoLambda = (trans: (String, Double)) => trans._1.startsWith("SB") == false	val badAccountRecords = acTransRDD.filter(badAcNoLambda)	badAccountRecords.collect	val badTransRecords = badAmountRecords.union(badAccountRecords)	badTransRecords.collect	val combineAllElements = sc.parallelize(acTransList).flatMap(trans => trans.split(","))	combineAllElements.collect	val allGoodAccountNos = combineAllElements.filter(_.startsWith("SB"))	allGoodAccountNos.distinct.collect	val accSummary = acTransRDD.reduceByKey(_ + _).sortByKey()	accSummary.collect5、Spark Transformation And Actions	a. Spark transformation		filter(fn)		map(fn)		flatMap(fn)		union(other)		join(other, [numTasks]):根据key连接两个RDD	b. Spark action		collect()		reduce(fn):		foreach(fn):迭代		reduceByKey(fn,[noOfTasks]):根据key分类,通过fn计算value		sortByKey([ascending], [numTasks]):通过key进行排序		first():返回RDD的第一个元素		take(n):返回RDD前n个元素		countByKey():计算每个key的个数		count():返回RDD元素的个数6、从文件中创建RDDLocal filesystem	val textFile = sc.textFile("README.md")HDFS			val textFile = sc.textFile("hdfs://
")

 

转载于:https://my.oschina.net/u/3209870/blog/868350

你可能感兴趣的文章
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>
高性能Javascript--脚本的无阻塞加载策略
查看>>
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>