gziped文件的RDD到“未压缩”数据框

数据挖掘 阿帕奇火花 pyspark
2022-02-20 03:57:07

我有一堆压缩文本文件,其中每一行都包含一个 JSON 对象。简化我的工作流程如下所示:

string_json = sc.textFile('/folder/with/gzip/textfiles/')
json_objects = string_json.map(make_a_json)
DataRDD = json_objects.map(extract_data_from_json)
DataDF = sqlContext.createDataFrame(DataRDD,schema).collect()
'''followed by some transformations to the dataframe'''

现在,代码工作正常。一旦无法在执行者之间平均分配数字文件,就会出现问题。

据我了解,这是因为 spark 不是提取文件然后将行分配给执行程序,而是每个执行程序都有一个文件可以使用。

例如,如果我有 5 个文件和 4 个执行程序,则前 4 个文件并行处理,然后是第 5 个文件。

因为第 5 个没有与其他 4 个并行处理,并且不能在 4 个执行者之间划分,所以它与前 4 个一起花费的时间相同。

这发生在程序的每个阶段。

有没有办法将这种划分的 RDD 转换为 RDD 或不是的 Dataframe?

0个回答
没有发现任何回复~