我有个关于皮斯帕克的问题。
我有两列“国家”和“网络”的数据框。我需要将这个dataframe保存为dictionary,以便稍后遍历另一个dataframe列。
我是这样救你的:
sorted_dict = result.rdd.sortByKey()
但当我尝试遍历它时,我有一个例外:
“似乎您正试图广播rdd或引用来自的rdd”异常:似乎您正试图广播rdd或引用来自操作或转换的rdd。rdd转换和操作只能由驱动程序调用,不能在其他转换内部调用;例如spark-5063
我知道我不能同时使用两个RDD,但不幸的是我不知道如何以这种方式使用sparkcontext.broadcast,因为我有一个错误
typeerror:broadcast()缺少2个必需的位置参数:“self”和“value”
有人能帮我弄清楚吗?我需要从Dataframe生成字典:
+--------------------+-------+
| web|country|
+--------------------+-------+
| alsudanalyoum.com| SD|
|periodicoequilibr...| SV|
| telesurenglish.net| UK|
| nytimes.com| US|
|portaldenoticias....| AR|
+----------------------------+
然后取另一个Dataframe:
+--------------------+-------+
| split_url|country|
+--------------------+-------+
| alsudanalyoum.com| Null|
|periodicoequilibr...| Null|
| telesurenglish.net| Null|
| nytimes.com| Null|
|portaldenoticias....| Null|
+----------------------------+
... 把字典的值放到国家栏。
p、 因为其他原因,我不适合加入美国。
1条答案
按热度按时间ipakzgxi1#
如果可以,你应该使用
join()
,但既然不能,就可以结合使用df.rdd.collectAsMap()
以及pyspark.sql.functions.create_map()
以及itertools.chain
实现同样的目标。注意:
sortByKey()
不返回字典(或Map),而是返回排序的RDD
.