1.SparkConf(LoadDefaults = True), 设置Spark的一些配置,例:conf. = SparkConf().setAppName("MyApplication")
2.SparkContext(conf = None), 一个SparkContext表示一个到Spark集群的连接,可以用来创建RDD和广播, 例:sc = SparkContext(conf = conf)
3.parallelize(Data), textFile(Path), 创建一个RDD,例:rdd = sc.parallelize([1,2,3,4,5]) , rdd = textFile("/root/log/*")
4.map(func), 对RDD做map操作, 例: rdd.map(lambda word : (word, 1))
5.reduceByKey(func), 对RDD做reduce操作, 例: rdd.reduceByKey(lambda value1, value2 : value1 + value2)
6.filter(func), 对RDD做筛选, 例:rdd.filter(lambda data : len(data) < 20)
7.saveAsTextFile(path), RDD保存到硬盘, 例:rdd.saveAsTextFile("/root/log/test")
8.cache(),数据持久化, 例 rdd.cache(); unpersist(),数据删除,例:rdd.unpersist()
9.collect():返回RDD的list union(otherDataset):合并数据集 join(otherDataset):左连接 broadcast(value):广播一个只读变量到集群,使用返回值
repartition(numPartitions):重新分片 flatMap():比map多一个扁平化处理 distinct():去重
tips:
1.读入的字符串都是Unicode类型不是str类型
2.全局变量只能在普通函数中使用,map reduce函数中使用的变量需要广播,也就是集群共享的只读变量需要广播
3.如果在map reduce函数中exit会导致driver一直等待,这样程序会一直占用资源,阻塞其他任务。
4.combineByKey + reduce + flatMap == join,join十分耗时,一般不使用
5.collect()到drive,做单机处理很方便,如果数据量不大可以。