hadoop—配置单元表中分区/存储桶的数量与它为对该数据执行任何操作而启动的Map任务的数量之间有关系吗?

7xllpg7q  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(387)

我知道map任务的数量与输入格式给定的输入拆分的数量相同。在分区或带块的配置单元表上执行操作时,inputformat类如何计算输入拆分,因为数据是以文件的形式存在于分区或带块数据的目录中?在输入分割(Map任务的数量)和分区或存储桶的数量之间有什么关系吗?

zz2j4svz

zz2j4svz1#

简单的回答是“sortof”。。hive将分割委托给hadoop,hadoop只关心分区中有多少数据,而不关心分区和存储桶。数据量间接地取决于分区的数量,因此为了更正确地回答您的问题,它并不直接取决于分区的数量。
在执行查询时,要使splits配置单元在默认情况下使用combinehiveinputformat,它实际上只是hadoop的一个 Package 器 CombineFileInputFormat . 所以实际上hive将委托hadoop如何进行分割。
hadoop的 CombineFileInputFormat 将较小的文件分组在一起,以便根据配置的最小拆分大小进行拆分。请注意,它属于hadoop,而不是hive,因此不了解bucket,但它只会根据文件的大小和位置(机架等)对文件进行分组,因为最好是将所有文件都放在同一节点上或至少放在同一机架上。
您可以在getsplits函数中查看如何创建拆分。

相关问题