1.28

今天继续做spark实验,学习rdd编程

1、RDD转换操作

filter(func):筛选出满足函数func的元素,并返回一个新的数据集

map(func):将每个元素传递到函数func中,并将结果返回为一个新的数据集

flatMap(func):与map()相似,但每个输入元素都可以映射到0或多个输出结果

groupByKey():应用于(K,V)键值对的数据集时,返回一个新的(K,Iterable)形式的数据集

reduceByKey(func):应用于(K,V)键值对的数据集时,返回一个新的(K,V)形式的数据集,其中每个值是每个key传递到函数func中进行聚合后的结果

2、RDD行动操作

count():返回数据集中的元素个数

collect():以数组的形式返回数据集中的所有元素

first():返回数据集中的第一个元素

take(n):以数组的形式返回数据集中的前n个元素

reduce(func):通过函数func(输入两个参数并返回一个值)聚合数据集中的元素

foreach(func):将数据集中的每个元素传递到函数func中运行

3、RDD分区

RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同节点上

4、RDD缓存(持久化)

在Spark中,RDD采用惰性求值的机制,每次遇到行动操作,都会从头开始执行计算。每次调用行动操作,都会触发一次从头开始的计算。这对于迭代计算而言,代价很大,迭代计算经常需要多次重复使用同一组数据。

缓存的意义:第二次动作操作时,只需要去使用第一次动作操作时缓存起来的值,避免重复计算

5、RDD键值对的操作和读写方法

1)键值对RDD的创建

val pairRDD = lines.flatMap(line => line.split("")).map(word => (word, 1))
pairRDD.foreach(println)

2)从文件中读取数据创建RDD

val textFile = sc.textFile(".....")
posted @ 2024-01-28 22:32  小趴菜且能喝66  阅读(12)  评论(0)    收藏  举报