我正在使用蜂窝,
我有24个json文件,总大小为300MB(在一个文件夹中),所以我创建了一个外部表(即表1),并将数据(即24个文件)加载到外部表中。
当我在外部表(即表1)上运行select查询时,我观察到有3个映射器和1个reducer正在运行。
之后,我又创建了一个外部表(即表2)。
我已经压缩了我的输入文件(包含24个文件的文件夹)。
示例:BZIP2
因此,它压缩了数据,但创建了24个扩展名为".BZiP2"的文件(即.file1.bzp2,….file24.bzp2).
之后,我将压缩文件加载到外部表中。
现在,当我运行select查询时,需要24个映射器和1个reducer。与未压缩的数据(即文件)相比,观察到的CPU时间花费了更多的时间。
如果数据是压缩格式(即表2选择查询),我如何减少映射器的数量?
如果数据是压缩格式(即表2选择查询),我如何减少CPU时间?CPU时间将如何影响性能?
只有当文件位于同一数据节点上时,映射器的数量才能小于文件的数量。如果文件位于不同的数据节点上,映射器的数量永远不会少于文件的数量。将所有/一些文件连接起来,并将它们放入您的表位置。使用cat命令连接非压缩文件。因为有24个文件,所以有24个映射器。参数mapreduce.input.fileinputformat.split.minsize/maxsize用于拆分较大的文件。
如果文件大小为200000字节,则设置的值
set mapreduce.input.fileinputformat.split.maxsize=100000;
set mapreduce.input.fileinputformat.split.minsize=100000;
将触发映射缩减作业的200000/100000 = 2
映射器
设置的值
set mapreduce.input.fileinputformat.split.maxsize=50000;
set mapreduce.input.fileinputformat.split.minsize=50000;
将触发相同作业的CCD_ 2映射器。
读取:
可拆分gzip
在猪蜂窝和mapreduce 中设置映射器
如何控制映射器的编号-需要用于高级查询
当TEZ是执行引擎时,为了手动设置配置单元查询中的映射器数量,配置tez.grouping.split-count
可由以下任一项使用:
在登录到HIVE CLI:set tez.grouping.split-count=4
时设置它将创建4个映射器hive-site.xml
中的一个条目可以通过Ambari添加。如果通过hive-site.xml设置,则需要重新启动hive。