Scala in Spark 基本操作【未完】

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

spark 笔记 5: SparkContext,SparkConf

spark读取hbase

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

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

# 创建textFileRDD
val 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.Math
textFile.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>:23
linesWithSpark.count()
res15:Long = 19

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

# 通过单词列表集合创建RDD thingsRDD
val thingsRDD = sc.parallelize(List("spoon","fork","plate","cup","bottle"))

# 计算RDD thingsRDD中单词的个数
thingsRDD.count()
res16:Long = 5

groupByKey( )转换操作
Scala in Spark 基本操作【未完】_第1张图片

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

你可能感兴趣的:(scala,spark)