【发布时间】:2016-05-26 12:27:59
【问题描述】:
我有大量需要转换为 Parquet 的 GZip 文件。由于 GZip 的压缩特性,不能对一个文件进行并行处理。
但是,既然我有很多,有没有一种相对简单的方法可以让每个节点都做部分文件?这些文件位于 HDFS 上。我假设我不能使用 RDD 基础架构来编写 Parquet 文件,因为这一切都是在驱动程序上完成的,而不是在节点本身上完成的。
我可以并行化文件名列表,编写一个处理 Parquet 本地的函数并将它们保存回 HDFS。我不知道该怎么做。我觉得我遗漏了一些明显的东西,谢谢!
这被标记为重复问题,但事实并非如此。我完全了解 Spark 能够将它们作为 RDD 读取而不必担心压缩,我的问题更多是关于如何将这些文件并行转换为结构化 Parquet 文件。
如果我知道如何在没有 Spark 的情况下与 Parquet 文件进行交互,我可以这样做:
def convert_gzip_to_parquet(file_from, file_to):
gzipped_csv = read_gzip_file(file_from)
write_csv_to_parquet_on_hdfs(file_to)
# Filename RDD contains tuples with file_from and file_to
filenameRDD.map(lambda x: convert_gzip_to_parquet(x[0], x[1]))
这可以让我并行化,但是我不知道如何在本地环境中与 HDFS 和 Parquet 交互。我也想知道:
1) 怎么做
或者..
2) 如何使用 PySpark 以不同的方式并行化此过程
【问题讨论】:
-
你的问题很好。这可能不是它的论坛,因为它似乎不是一个编程问题。
-
嗯,这是关于在 PySpark 中实现并行化
-
好的,这并没有真正出现在问题中。我的建议:在 pyspark 中进行某种尝试,如果它不起作用,请将您尝试的内容带到这里(在一个新问题中)。
-
好吧,我又把问题扩大了,我给zero323发消息。我不知道如何处理它,这就是我寻求帮助的原因:) 谢谢
标签: python hadoop apache-spark gzip pyspark