Scala in Spark 基本操作【未完】

来源:互联网 发布:ubuntu使用方法 编辑:程序博客网 时间:2024/06/05 10:46

[Apache Spark大数据分析入门(一)(http://www.csdn.net/article/2015-11-25/2826324)

spark 笔记 5: SparkContext,SparkConf

spark读取hbase

Scala 强大的集合数据操作示例

spark中的一些RDD操作以及变换

# 创建textFileRDDval textFile = sc.textFile("README.md")textFile.first()  #获取textFile RDD的第一个元素res3:String = # Apache Spark# 筛选出包括Spark关键字的RDD然后进行行计数val  linesWithSpark = textFile.filter(line => line.contains("Spark"))linesWithSpark.count()res10:Long = 19# 找出RDD textFile中包含单词数最多的行textFile.map(line=>line.split(" ").size).reduce((a,b)=>Math.max(a,b))res12:Int = 14  #第14行是包含单词最多的行# 在scala shell中引入Java方法:import java.lang.MathtextFile.map(line=>line.split(" ").size).reduce((a,b) => Math.max(a,b))#将RDD linesWithSpark 缓存,然后进行计数linesWithSpark.cache()res13:linesWithSpark.type = MapPartitionsRDD[8] at filter at <console>:23linesWithSpark.count()res15:Long = 19

RDD:
makeRDD 和 parallelize是一样的,不过makeRDD好像只能scala用,parallelize是Python和 R都能用的

# 通过单词列表集合创建RDD thingsRDDval thingsRDD = sc.parallelize(List("spoon","fork","plate","cup","bottle"))# 计算RDD thingsRDD中单词的个数thingsRDD.count()res16:Long = 5

groupByKey( )转换操作
这里写图片描述

pairRDD.groupByKey()#得到:Banana [Yellow]Apple  [Red, Green]Kiwi   [Green]FIgs   [Black]

collect 或 materialize linesWithSpark RDD中的数据

collect方法返回计算好的数值。??

linesWithSpark.collect()

缓存RDD linesWithSpark

linesWithSpark.cache()

将linesWithSpark从内存中删除

linesWithSpark,unpersist()

RDD的部分转换操作:

转换操作 作用 filter() 过滤 map() 将一个RDD中的每个数据项,通过map中的函数映射为一个新的元素,返回集合对象 flatMap() 先map,再将所有的输出分区合并成一个。 distinct() 对RDD中的元素进行去重操作 coalesce() 将RDD进行重新分区,使用HashPartitioner repartition() coalesce函数第二个参数为true的实现 sample() union() 将2个RDD合并,不去重 intersection() 返回两个RDD的交集,并且去重 subtract 类似intersection,返回在RDD中出现,并且不在otherRDD中出现的元素,不去重。 mapPartitions 与map类似,按分区进行映射 mapPartitionsWithIndex 同mapPartitions,多提供了2个参数 zip 用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常。 zipPartitions 将多个RDD按照partition组合成为新的RDD,该函数需要组合的RDD具有相同的分区数,但对于每个分区的元素数量没有要求 partitionBy mapValues flatMapValues combineByKey foldByKey groupByKey() reduceByKey() reduceByKeyLocally randomSplit() 根据weights权重,将一个RDD切分成多个RDD

Action操作 说明 first count reduce collect take top takeOrdered aggregate fold lookup countByKey foreach foreachPartition sortBy saveAsTextFile saveAsSequenceFile saveAsObjectFile
0 0