hdfs上大于块大小的文件不会分离

bsxbgnwa  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(209)

我的hdfs块大小是256mb,我读取了一个9.9gb的txt文件,然后用spark把它转换成orc类型,通过调用 write 方法:

dataframe.coalesce(16).write.mode("overwrite")
.partitionBy("myDate").
orc("hdfs://myhost:9090/user/hive/warehouse/ods/data.orc")

我设想,当我在hdfsui上查看结果并浏览文件时,下面应该有16个文件 data.orc 目录和每个文件的大小小于块大小256mb。但是,只有一个目录 mydate=20210131 ,当我进入它,只有一个1.29gb的文件,这是远远大于块大小256mb。
这种情况让我很困惑,谁能告诉我:
为什么一个1.29GB的文件可以放入一个256mb的块中?我有什么误解吗?
为什么文件没有划分成更小的文件,甚至我调用coalesce(16)来尝试将它们划分成16个部分,这样就有16个文件了?
如果我的文件小于256mb,比如说200mb,剩下的56mb会被系统重用吗?

8qgya5xd

8qgya5xd1#

我已经清楚地告诉自己,大于块大小的文件保存在多个块中,但hdfs上只有一个文件。
在本地模式下,只有一个执行器,驱动程序。我打电话给 partiitonBy(mycol) 在我的代码中,只有所以列中只有一个值 mycol ,因此只有一个文件。
是的,未使用的空间将不会被占用。

相关问题