前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spark笔记8-键值对RDD

Spark笔记8-键值对RDD

作者头像
皮大大
发布2021-03-02 15:54:25
发布2021-03-02 15:54:25
85400
代码可运行
举报
运行总次数:0
代码可运行

键值对RDD

创建
  1. 从数据中进行加载生成键值对RDD
代码语言:javascript
代码运行次数:0
运行
复制
lines = sc.textFile("word.txt")
pairRDD = lines.flatMap(lambda line: line.split(" ")) \ # 将数据先进行分割split,再拍平flat,形成单个的元素
               .map(lambda word:(word, 1))  # 单个元素和1组成元组的形式,键值对RDD
pairRDD.foreach(print)

("hadoop", 1)
("spark", 1)
("hive", 1)
常见转换

reduceByKey(func)

先通过key进行分组,再通过value进行func函数的运用

代码语言:javascript
代码运行次数:0
运行
复制
pairRDD = sc.parallelize([("hadoop",1),("hive",1),("spark", 1), ("spark", 1)])
pairRDD.reduceByKey(lambda a,b: a+b).foreach(print)   # 先通过key进行分组,再通过value进行func函数的运用

("spark",2)
("hive",1)
("hadoop",1)

groupByKey()

不进行聚合运算,只是将相同键的值进行合并成一个列表的形式。

代码语言:javascript
代码运行次数:0
运行
复制
pairRDD = sc.parallelize([("hadoop",1),("hive",1),("spark", 1), ("spark", 1)])
pairRDD.reduceByKey(lambda a,b: a+b).foreach(print)   # 先通过key进行分组,再通过value进行func函数的运用

("spark",(1, 1))  # 不进行计算,只合并成一个元组形式  
("hive",1)
("hadoop",1)

reduceByKey可以等价于groupByKey加上map操作:

代码语言:javascript
代码运行次数:0
运行
复制
# 1
words = ["one","two","two", "three", "three", "three"]
wordpairRDD = sc.parallelize(words).map(lambda word:(word,1))
wordCountReduce = wordpairRDD.reduceByKey(lambda a.b:a+b)
wordCountReduce.foreach(print)

# 2
wordcountGroup = wordpairRDD.groupByKey().map(lambda t:(t[0], sum(t[1])))
wordCountGroup.foreach(print)

("one",1)
("two",2)
("three",3)

keys()/vlaues()

只取出key/value的值

代码语言:javascript
代码运行次数:0
运行
复制
pairRDD = sc.parallelize([("hadoop",1),("hive",1),("spark", 1), ("spark", 1)])
pairRDD.keys().foreach(print)

sortBykey()

key进行排序,默认是升序False

mapValues(func)

key保持不变,值根据func函数进行改变

代码语言:javascript
代码运行次数:0
运行
复制
pairRDD = sc.parallelize([("hadoop",1),("hive",1),("spark", 1), ("spark", 1)])
pairRDD1 = pairRDD.mapValues(lambda x:x+1)  # 将每个值进行加1操作
pairRDD1.foreach(print)

("hadoop",2)
("hive",2)
("spark",2)
("spark",2)

join

如果两个RDDkey相同,将它们的value进行合并,形成一个元组的形式。

综合demo

  • mapValues:只对value进行操作,而且没有聚合操作
  • reduceByKey(func):先分组,再对value进行函数func的聚合操作
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 键值对RDD
    • 创建
    • 常见转换
  • 综合demo
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档