根据对this question I asked earlier的建议,我能够以我想要的格式将RDD转换成JSON。为了将它保存到HDFS中,我想将其转换回RDD,并使用coalesce将其保存到10个分区文件中。
我目前所做的是:
my_rdd = sc.parallelize([my_json])转换为RDDmy_rddcoalesce(10).saveAsTextFile进行合并和保存在我的测试中,这是成功执行的,但是10个分区文件中只有一个有数据。进一步的检查,看起来整个json文件作为一个记录加载到RDD中,而不是每个json元素一个记录,从而导致coalesce函数无法正确地拆分数据。
我试着发出hadoop fs -text <saved_file_partition> |head -n 1,整个JSON都被抛出了,而不仅仅是第一个记录。
如何正确地将JSON对象转换为RDD?
发布于 2018-06-26 10:21:06
因为您将RDD定义为
sc.parallelize([my_json])它将只有一条记录,并且单个记录永远不会在分区之间被分割。因此,不管您使用了多少分区--数据集中只能有一个非空分区。
https://stackoverflow.com/questions/51034110
复制相似问题