Hive 映射者数量:Mapreduce与Sqoop

Hive 映射者数量:Mapreduce与Sqoop,hive,mapreduce,hdfs,sqoop2,Hive,Mapreduce,Hdfs,Sqoop2,无法在mapreduce程序上定义映射器的数量,因为将根据输入分割或大小选择总映射器。 但是,为什么我们可以在sqoop上设置num映射器呢? 当mapreduce程序自己使用数字或映射程序,不让我们选择它时,为什么允许sqoop这样做?sqoop将使用--按列分割数据集。阅读它是如何工作的。还可以在详细模式下运行sqoop,以便更好地理解它的工作原理。 它将获得分割列的最小值和最大值,并在num mappers parts上分割整个范围,假设分割列均匀分布。如果数据集分布不均匀,sqoop将在

无法在mapreduce程序上定义映射器的数量,因为将根据输入分割或大小选择总映射器。 但是,为什么我们可以在sqoop上设置num映射器呢?
当mapreduce程序自己使用数字或映射程序,不让我们选择它时,为什么允许sqoop这样做?

sqoop将使用
--按
列分割数据集。阅读它是如何工作的。还可以在详细模式下运行sqoop,以便更好地理解它的工作原理。
它将获得分割列的最小值和最大值,并在num mappers parts上分割整个范围,假设分割列均匀分布。如果数据集分布不均匀,sqoop将在不均匀(倾斜)的映射器之间分割数据集

映射器的数量也是可配置的,至少在蜂巢中是这样。 例如,如果您使用Tez,您可以配置最小和最大分组拆分大小:

set tez.grouping.min-size=16777216; -- 16 MB min split
set tez.grouping.max-size=1073741824; -- 1 GB max split
此外,您还可以配置拆分编号,如果可能,Tez将开始接近其映射者的数量(某些拆分可以合并,某些拆分无法拆分,但会影响映射者的数量):

不建议使用此方法,最好使用上面的拆分大小设置

对于MR执行引擎:

set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB
set mapreduce.input.fileinputformat.split.maxsize=1073741824; -- 1 GB
控制地图绘制者的数量并不容易,因为这取决于许多因素。例如,ORC在条带级别上被拆分,这意味着您不能拆分小于单个条带的部分,等等。请阅读更多关于

set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB
set mapreduce.input.fileinputformat.split.maxsize=1073741824; -- 1 GB