保存一个太大的CSV文件,无法将内存放入镶木地板文件中

时间:2018-01-25 17:48:01

标签: python apache-spark parquet

我的开发环境是一个单用户工作站,有4个内核,但没有运行Spark或HDFS。我的CSV文件太大,无法容纳在内存中。我想将它保存为镶木地板文件并使用现有工具在本地进行分析,但是将来能够将其移动到Spark集群并使用Spark进行分析。

有没有办法逐行执行此操作而不将文件移动到Spark群集?

我正在寻找一种不涉及使用Spark的纯python解决方案。

2 个答案:

答案 0 :(得分:1)

读取大于内存的文件没有问题。 Spark可以处理这样的情况,无需任何调整,

spark.read.csv(in_path).write.parquet(out_path)
只要您不对输入使用不可分割的压缩(例如gzip),

就可以正常工作。

答案 1 :(得分:0)

pyarrow.parquet函数write_to_dataset()看起来可以执行此操作。 https://arrow.apache.org/docs/python/parquet.html#writing-to-partitioned-datasets

但是,我目前无法找到此功能的详细文档-您可能需要查看源代码以了解其功能。 https://github.com/apache/arrow/blob/master/python/pyarrow/parquet.py,在撰写本文时,在第1154行。

pyarrow.parquet.ParquetWriter对象也可以做到这一点。