当我 运行 配置单元查询时如何减少映射器的数量?
How to reduce number of mappers, when I am running hive query?
我正在使用配置单元,
我有 24 个 json 文件,总大小为 300MB(在一个文件夹中),所以我创建了一个外部 table(即 table1)并加载了数据(即 24 个文件)进入外部 table.
当我在外部 table(即 table1)之上 运行 select 查询时,我观察到 3 个映射器和 1 个减速器是 运行.
之后我又创建了一个外部 table(即 table2)。
我已经压缩了我的输入文件(包含 24 个文件的文件夹)。
示例:BZIP2
因此它压缩了数据,但创建了 24 个扩展名为“.BZiP2”的文件
(即..file1.bzp2,.....file24.bzp2)。
之后,我将压缩文件加载到外部 table。
现在,当我 运行 select 查询时,它需要 24 个映射器和 1 个缩减器。并且观察到 CPU 与未压缩数据(即文件)相比,时间花费了更多时间。
如果数据是压缩格式(即 table2 select 查询),我如何减少映射器的数量?
如果数据是压缩格式(即 table2 select 查询),我如何减少 CPU 时间? CPU 时间将如何影响性能?
如果文件大小为200000字节,设置值
set mapreduce.input.fileinputformat.split.maxsize=100000;
set mapreduce.input.fileinputformat.split.minsize=100000;
将为 map reduce 作业触发 200000/100000 = 2
个映射器
设定值
set mapreduce.input.fileinputformat.split.maxsize=50000;
set mapreduce.input.fileinputformat.split.minsize=50000;
将为同一作业触发 200000/50000 = 4
个映射器。
阅读:
set-mappers-in-pig-hive-and-mapreduce
how-to-control-the-number-of-mappers-required-for-a-hive-query
仅当文件在同一个数据节点上时,映射器的数量才能小于文件的数量。如果文件位于不同的数据节点上,则映射器的数量永远不会少于文件的数量。连接所有/一些文件并将它们放入您的 table 位置。使用 cat 命令连接非压缩文件。你有 24 个映射器,因为你有 24 个 files.Parameters mapreduce.input.fileinputformat.split.minsize / maxsize 用于拆分更大的文件。
当 TEZ 是执行引擎时,为了在 Hive 查询中手动设置映射器的数量,配置 tez.grouping.split-count
可用于:
登录到 HIVE CLI 时设置它:set tez.grouping.split-count=4
将创建 4 个映射器
可以通过 Ambari 添加 hive-site.xml
中的条目。如果通过 hive-site.xml 设置,需要重新启动 HIVE。
我正在使用配置单元,
我有 24 个 json 文件,总大小为 300MB(在一个文件夹中),所以我创建了一个外部 table(即 table1)并加载了数据(即 24 个文件)进入外部 table.
当我在外部 table(即 table1)之上 运行 select 查询时,我观察到 3 个映射器和 1 个减速器是 运行.
之后我又创建了一个外部 table(即 table2)。
我已经压缩了我的输入文件(包含 24 个文件的文件夹)。
示例:BZIP2
因此它压缩了数据,但创建了 24 个扩展名为“.BZiP2”的文件 (即..file1.bzp2,.....file24.bzp2)。
之后,我将压缩文件加载到外部 table。
现在,当我 运行 select 查询时,它需要 24 个映射器和 1 个缩减器。并且观察到 CPU 与未压缩数据(即文件)相比,时间花费了更多时间。
如果数据是压缩格式(即 table2 select 查询),我如何减少映射器的数量?
如果数据是压缩格式(即 table2 select 查询),我如何减少 CPU 时间? CPU 时间将如何影响性能?
如果文件大小为200000字节,设置值
set mapreduce.input.fileinputformat.split.maxsize=100000;
set mapreduce.input.fileinputformat.split.minsize=100000;
将为 map reduce 作业触发 200000/100000 = 2
个映射器
设定值
set mapreduce.input.fileinputformat.split.maxsize=50000;
set mapreduce.input.fileinputformat.split.minsize=50000;
将为同一作业触发 200000/50000 = 4
个映射器。
阅读:
set-mappers-in-pig-hive-and-mapreduce
how-to-control-the-number-of-mappers-required-for-a-hive-query
仅当文件在同一个数据节点上时,映射器的数量才能小于文件的数量。如果文件位于不同的数据节点上,则映射器的数量永远不会少于文件的数量。连接所有/一些文件并将它们放入您的 table 位置。使用 cat 命令连接非压缩文件。你有 24 个映射器,因为你有 24 个 files.Parameters mapreduce.input.fileinputformat.split.minsize / maxsize 用于拆分更大的文件。
当 TEZ 是执行引擎时,为了在 Hive 查询中手动设置映射器的数量,配置 tez.grouping.split-count
可用于:
登录到 HIVE CLI 时设置它:set tez.grouping.split-count=4
将创建 4 个映射器
可以通过 Ambari 添加 hive-site.xml
中的条目。如果通过 hive-site.xml 设置,需要重新启动 HIVE。