我在hdfs上有许多parquet文件目录,每个目录包含几千个小的(大多数<100kb)parquet文件。他们减慢了我的Spark工作,所以我想结合他们。
使用以下代码,我可以将本地Parquet文件重新划分为较少的部分:
val pqFile = sqlContext.read.parquet("file:/home/hadoop/data/file.parquet")
pqFile.coalesce(4).write.save("file:/home/hadoop/data/fileSmaller.parquet")
但我不知道如何通过scala代码编程获得hdfs上目录的大小,因此我无法计算传递给服务器的分区数 coalesce
实际数据集的函数。
我该怎么做?或者在spark中是否有一种方便的方法,以便我可以配置writer来编写固定大小的Parquet地板分区?
1条答案
按热度按时间bvn4nwqk1#
你可以试试
根据文档,它返回“组成此Dataframe的文件的最大努力快照”。
或者,直接在hdfs级别:
这样你也可以得到文件大小。