pyspark/python:将字典python输出转换为rdd/或其他可保存(hdfs)格式

vx6bjr1n  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(968)

我是spark/pyspark/hdfs的新手,我尝试直接从hdfs加载一个.json文件,代码如下:

import json

file = sc.textFile('/path/to/HDFS/my.json')
data = file.map(lambda x: json.loads(x))
lis = data.collect()

... a lot of Python functions.
dictionary_output = {'key1': 'value1', 'key2': 'value2', ...}

加载文件后,我使用一些python函数来处理数据。所有这些函数之后的输出都是dictionary,如代码所示。我现在无法将它保存回hdfs

dictionary_output.saveAsTextFile('/path/')

没有´我不为字典工作。我还尝试了“并行化”字典,但是输出文件只包含键´s和no值。
所以我的问题是:什么是正确的命令来将字典输出格式化为rdd或其他可以用pyspark/python保存在hdfs上的文件格式。

nc1teljy

nc1teljy1#

我也遇到了类似的问题,在我的例子中,最好的方法是将序列化的字典作为json文件保存回hdfs。
您可以通过以下代码执行此操作:

sc = spark.sparkContext

spark.read.json(sc.parallelize([my_dict])).coalesce(1).write.mode('append').json('/hdfs_path')

注意,我发现需要显式地使用'read.json',以避免pyspark根据列数据类型推断字典模式时出现任何错误/警告。

相关问题