gpt4 book ai didi

hadoop - 在Hive中的许多表上执行有效的联接

转载 作者:行者123 更新时间:2023-12-02 21:19:20 26 4
gpt4 key购买 nike

我将加入约14个表以在Hive 1.2中创建基表。每个表都有数百万条记录,这些是执行查询时使用的参数

hive.exec.dynamic.partition=true;  
hive.exec.max.dynamic.partitions.pernode=200000;
hive.exec.max.dynamic.partitions=200000;
hive.exec.max.created.files=250000;
hive.enforce.bucketing=true;
hive.auto.convert.join=false;
mapreduce.map.memory.mb=8192;
mapreduce.reduce.memory.mb=8192;
mapred.reduce.child.java.opts=-Xmx8096m;
mapred.map.child.java.opts=-Xmx8096m;
hive.exec.dynamic.partition.mode=nonstrict;

我正在使用ORC文件格式,并根据ID对表进行存储分区,并根据年,季度和月对表进行分区。该表显然在连接方面进行了大量的计算。请让我知道其他任何参数或执行其他可用于更有效地执行联接的策略

最佳答案

您还可以查看源表中文件和文件块的大小。基本上,每个连接都是对每个文件块进行的,因此增加文件/块的大小意味着需要进行的连接较少。另一方面,较大的文件/块意味着较少的并行化,因此需要进行一些测试才能找到合适的平衡。您可以通过与以下设置进行小文件合并来调整块大小。这些设置还将为每个文件产生1个块,这对于大多数情况下的性能而言是理想的。

-- config settings to be added to the DML that loads your source tables
-- these will merge the files into 500MB files with only one block per file
-- as long as the block size is set higher than the file size then only one block will be produced
set hive.merge.smallfiles.avgsize = 524288000;
set dfs.block.size = 1073741824;

关于hadoop - 在Hive中的许多表上执行有效的联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com