首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从hadoopish文件夹加载拼花文件

如何从hadoopish文件夹加载拼花文件
EN

Stack Overflow用户
提问于 2017-05-21 10:56:10
回答 2查看 780关注 0票数 0

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

代码语言:javascript
复制
df.write().parquet("myTest.parquet");

.然后就会以一种草率的方式保存它(一个包含大量文件的文件夹)。

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

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

代码语言:javascript
复制
load_df = sqlContext.read.parquet("myTest.parquet").where('field1="aaa"').select('field2', 'field3').coalesce(64)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-21 11:11:57

星星之火将您的文件写入一个目录中,如您所说,此文件包含大量文件,如果写入操作成功,它将保存另一个名为_SUCCESS的空文件。

我是从scala来的,但我相信python也有类似的方式

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

代码语言:javascript
复制
df.write.parquet("path")
loaddf = spark.read.parquet("path")

我试着收集(),但没有用。

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

是否可以将数据帧保存为单个文件?

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

希望能帮上忙,向你问好

票数 1
EN

Stack Overflow用户

发布于 2017-05-21 11:04:54

是否可以将数据帧保存为单个文件?

是的,但是您不应该对单个JVM施加太多的压力,这不仅会导致性能下降,而且还会导致JVM终止,从而导致整个Spark应用程序失败。

因此,是的,这是可能的,您应该使用repartition(1)来拥有一个分区:

重新分区( numPartitions : Int):DatasetT返回一个完全有numPartitions分区的新数据集。

如何更改Python代码以从hadoopish文件夹读取Parquet文件

从dataset (您称之为"hadoopish“文件夹)加载数据集,与内部结构完全无关,并将其视为单个文件(即封面下的目录)。

这是一个文件存储方式的内部表示,不影响加载它的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44096013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档