python-3.x - 从两个不同的 rdd 创建一个新的 rdd
问题描述
我有两个 rdd 如下:
rdd1=sc.parallelize([(('a','b'),10),(('c','d'),20)])
rdd2=sc.parallelize([('a',2),('b',3),('c',4)])
我需要创建一个新的 rdd 如下:(值('a', 'b') => value(a,b)/value(a) => 10/2
[(('a','b'), 5.0), (('c','d'), 5.0)]
解决方案
您的要求表示您希望数字 rdd1 除以 rdd2 的值,该值与 rdd2 的键与 rdd1 键的第一个值相匹配。
如果我的理解是正确的,那么可以通过执行以下操作来满足您的要求,其中 rdd1 被转换为使第一个值作为键,以便可以执行两个 rdd 之间的连接。
rdd1.map(lambda x: (x[0][0], x)).join(rdd2).map(lambda x: (x[1][0][0], float(x[1][0][1]/x[1][1])))
#[(('a', 'b'), 5.0), (('c', 'd'), 5.0)]
推荐阅读
- javascript - 将 Stylelint 与 Vue.js 集成
- javascript - 使用 jQuery 设置元素的 onclick 属性时遇到问题
- spring-cloud-gateway - 如何为路由设置默认前缀?
- javascript - jQuery滚动到按钮单击中的部分
- ios - 检查应用程序是否通过 iOS 上的今日小部件启动...?
- node.js - 将 Excel 日期转换为 Moment 日期会产生错误的年份输出
- mysql - Grafana 中使用 mysql 数据库制作图形时出现错误 1064
- python - 加载到 pd.DataFrame 时日期时间的奇怪行为
- python-3.x - 超时前未收到 SNMP 响应 - 带有非常基础的示例示例
- wireshark - 使用特定wireshark版本的editcap