java - 如何从 hadoopish 文件夹加载 Parquet 文件

标签 java python apache-spark apache-spark-sql

如果我在 Java 中以这种方式保存数据帧,...:

df.write().parquet("myTest.parquet");

...,然后它以 hadoopish 方式保存(一个包含大量文件的文件夹)。

是否可以将数据帧保存为单个文件?我尝试了 collect(),但没有帮助。

如果这是不可能的,那么我的问题是我应该如何更改Python代码以从df.write().parquet("myTest.parquet")创建的hadoopish文件夹中读取Parquet文件:

load_df = sqlContext.read.parquet("myTest.parquet").where('field1="aaa"').select('field2', 'field3').coalesce(64)

最佳答案

Spark 将您的文件写入一个目录中,正如您所说,该文件有很多,如果写入操作成功,它会保存另一个名为 _SUCCESS 的空文件

我来自 scala,但我相信 python 中也有类似的方式

parquetjson 或任何您想要的格式保存和读取文件非常简单:

df.write.parquet("path")
loaddf = spark.read.parquet("path")

I tried collect(), but it does not help.

谈到collect,在此类操作中使用它并不是一个好的做法,因为它将您的数据返回给驱动程序,因此您将失去并行计算的好处,并且会导致 OutOfMemoryException 如果数据无法放入内存

Is it possible to save data frame as a single file?

在大多数情况下您确实不需要这样做,如果是这样,请在保存之前在 Dataframe 上使用 repartition(1) 方法

希望对您有帮助,祝好

关于java - 如何从 hadoopish 文件夹加载 Parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096013/

相关文章:

r - SparkR - 列表中的子集值

java - 如何运行 Spark Java 程序

Java 将排名和花色存储为字符串

Java如何修复 "object is not an instance of declaring class"错误?

python - NumPy 中的 3D 数组索引可减少行数

python - 将错误栏添加到 Pandas 图中的单个列

scala - Spark数据集解压函数

java - 将 xpath 表达式结果转换为 json

java - 第二个输出必须为真,但显示为假

python - 与类继承和 super().__init__ 作斗争