加载一个配置单元表时spark会创建多少个分区

wfsdck30  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(364)

即使它是一个配置单元表或hdfs文件,当spark读取数据并创建一个Dataframe时,我认为rdd/dataframe中的分区数将等于hdfs中partfiles的数目。但是当我用hiveexternaltable做一个测试时,我发现这个数字和part文件的数字不一样,Dataframe中的分区数是119。该表是一个配置单元分区表,其中包含150个部件文件,最小文件大小为30 mb,最大文件大小为118 mb。那么是什么决定了分区的数量呢?

x4shl7ld

x4shl7ld1#

我想这个链接确实回答了我的问题,分区的数量取决于拆分的数量,拆分的数量取决于hadoop的inputformat。https://intellipaat.com/community/7671/how-does-spark-partition-ing-work-on-files-in-hdfs

qybjjes1

qybjjes12#

您可以通过设置 spark.sql.files.maxPartitionBytes . 默认值为128 mb,请参阅spark tuning。

mrfwxfqh

mrfwxfqh3#

每个块的块大小为128mb。spark将读取数据。假设您的配置单元表大小约为14.8gb,那么它将把配置单元表数据划分为128mb块,并将产生119个分区。
另一方面,配置单元表是分区的,因此分区列有150个唯一值。
所以配置单元中的部件文件数和spark中的分区数没有链接。

相关问题