RDD(Resilient Distributed Datasets),弹性分布式数据集,是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低.
创建RDD的两种方法:
1.并行化集合
val data= sc.parallelize(Array(1,2,3)) 2.外部数据集
val textFile = sc.textFile("file:///opt/word.txt")
map(对所有的元素进行操作)函数:
filter(过滤元素)函数:
count(计算元素个数)函数:
distinct(去重):
union(并集):
intersection(交集):
cartesian(笛卡尔积):
sortByKey(排序)函数:
groupByKey(分组)函数:
reduceByKey数据聚合函数:
cogroup
first(第一个元素):
take(返回前几个元素):
在/opt目录下新建文件word.txt,并输入一些内容。
启动spark-shell
val textFile = sc.textFile("file:///opt/word.txt")
textFile.first()
val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCount.collect()
val rr=sc.textFile("file:///opt/word.txt").flatMap(x=>x.split(" ")).countByValue()
上面是读取本地文件,还可以读取hdfs上面的文件