Hive 能否控制HortonWorks HDP 3.4.1托管表的hdfs文件大小?

Hive 能否控制HortonWorks HDP 3.4.1托管表的hdfs文件大小?,hive,hdfs,hdp,Hive,Hdfs,Hdp,当前正在测试集群,当使用“创建表为”时,生成的托管表最终是一个文件~1.2 GB,而创建查询的基础文件有许多小文件。SELECT部分运行得很快,但结果是运行两个reducer来创建一个文件,占用75%的运行时间 附加测试: 1) 如果使用“”创建外部表作为“”,则查询运行速度非常快,并且不涉及合并文件步骤 2) 此外,HDP 3.0.1版似乎不会发生合并。您可以更改设置hive.exec.reducers.bytes.per.reducer=,让hive根据reducer输入大小决定reduce

当前正在测试集群,当使用
“创建表为”
时,生成的托管表最终是一个文件~1.2 GB,而创建查询的基础文件有许多小文件。SELECT部分运行得很快,但结果是运行两个reducer来创建一个文件,占用75%的运行时间

附加测试:

1) 如果使用“”创建外部表作为“”,则查询运行速度非常快,并且不涉及合并文件步骤


2) 此外,HDP 3.0.1版似乎不会发生合并。

您可以更改
设置hive.exec.reducers.bytes.per.reducer=
,让hive根据reducer输入大小决定reducer的数量(默认值设置为1 GB或100000000字节)[您可以参考@leftjoin提供的链接,以获取有关此属性的更多详细信息,并根据您的需要进行微调]

您可以尝试的另一个选项是更改以下属性

set mapreduce.job.reduces=<number>
set hive.exec.reducers.max=<number>

设置mapreduce.job.reduces=
设置hive.exec.reducers.max=

这是否回答了您的问题?另请阅读:也请阅读关于在分发者中使用rand()的内容: