python - 减少(键,值),其中值是 Spark 中的字典
问题描述
我是新来的火花,还在学习。我的问题是我正在使用一个map
函数来创建一个形式为 (key, dict) 的 Rdd,它看起来像这样[(0, {‘f_0’:’-0.5’}), (0, {‘f_1’:’-0.67’}), (1, {‘f_0’:’-0.36’}), (1, {‘f_1’:’-1.5’})]
通过键减少的所需形式应该是:
[(0, {’f_0’:’-0.5’,’f_1’:’-0.67’}), (1, {‘f_0’:’-0.36’, ‘f_1’:’-1.5’})]
我pyspark
在databricks上使用python
有人可以帮忙吗?
解决方案
根据您的问题,您的地图功能输出是:
df = spark.createDataFrame([
(0, {'f_0':-0.5}),
(0, {'f_1':-0.67}),
(1, {'f_0':-0.36}),
(1, {'f_1':-1.5})], ["key", "val"])
将以下代码与 reduceByKey 一起使用以获得所需的输出:
df.rdd.reduceByKey(lambda a,b:{**a,**b})
请注意,上面的代码将在 python3 版本而不是 python2 中工作。因此 pyspark python 版本应该是 3.5 或更高。
如果您的 pyspark python 版本是 2.7,则使用以下代码:
def merge_two_dicts(x, y):
z = x.copy()
z.update(y)
return z
merge= df.rdd.reduceByKey(merge_two_dicts)
推荐阅读
- python - Python 用 pyautogui 保存多张图片
- html - 导航栏中的下拉菜单不起作用
- python - python - 未解决的参考,我不知道为什么?
- c++ - 在布局 C++ QT 中移动小部件
- java - 使用 servlet 和 jquery 搜索数据库
- javascript - 从 getter 返回的函数的 `this` 关键字的值
- php - .htaccess 中的 Angular + Laravel PHP 路由
- sql - HIVE SQL:从庞大的数据库中仅选择一个值的最快方法是什么
- r - 如何计算长格式数据帧中值的转换?
- python - Django Admin - 编辑用户时,还需要并更新他的密码