当我运行配置单元查询时,如何减少映射器的数量



我正在使用蜂窝,

我有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。

相关内容

  • 没有找到相关文章

最新更新