首页 > 代码库 > Spark 编程基础
Spark 编程基础
1. 初始化Spark
import org.apache.spark.{SparkContext, SparkConf}val conf=new SparkConf().setAppName("RDD1").setMaster("local")val sc=new SparkContext(conf)
2. 创建RDD的方法
内存:Parallelize 或者 makeRDD
外部文件:textFile
//1. both Parallelize and makeRDD could create RDD from In-Memory val distData=http://www.mamicode.com/sc.parallelize(data) // parallelize"E:/Java_WS/ScalaDemo/data/wc.txt")
3. 键值对
下面两者等价:
myRDD. map (s=> (s,1))myRDD. map (_,1)
reduceByKey 和sortByKey、groupByKey
distFile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println) distFile.flatMap(_.split(" ")).map(s=>(s,1)).sortByKey().collect().foreach(println)distFile.flatMap(_.split(" ")).map(s=>(s,1)).groupByKey().foreach(println)
1)返回key 以及 每个key的个数 (key, cnt)
2)返回 (key,value) 排序后的
3)返回(key, (value1,value2...))
4. RDD 持久化
persist() 或 cache()
unpersist() 可以删除缓存RDD
5. 广播变量和累加器
- 通过sc.broadcast(v) 和 sc.accumulator(初始值,comments)定义
- 通过value访问其值。
- 广播变量不能修改了
- 累加器只能通过add 或者 +=修改
//SparkContext.broadcast(v) is a broadcast variable, could replace v in any place of the clusterval broadcastVar=sc.broadcast(Array(1,2,3))println(broadcastVar.value(0),broadcastVar.value(1),broadcastVar.value(2)) val accum=sc.accumulator(0,"My Accumulator")sc.parallelize(Array(1,2,3,4)).foreach(x=>accum+=x)println(accum.value)
Spark 编程基础
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。