hive distinct查询需要时间

qcuzuvrc  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(365)

表结构-

hive> desc table1;
OK
col1 string
col2 string
col3 string
col4 bigint
col5 string
Time taken: 0.454 seconds, Fetched: 5 row(s);

基础文件数-

[user@localhost ~]$ hadoop fs -ls /user/hive/warehouse/database.db/table | wc -l
58822
[user@localhost ~]$

不同查询- select distinct concat(col1,'~',col2,'~',col3) from vn_req_tab; ```
Total records - ~2M Above query runs for 8 hours.

问题的起因是什么,如何调试此查询。
mf98qq94

mf98qq941#

你有大量的小文件,这是主要的问题。当您执行查询时,1个Map器在每个文件上执行,因此有很多Map器在一小块数据(每个文件一个)上运行每个Map器,这意味着它们正在消耗集群中不必要的资源,并等待其他Map器完成。
请注意,hadoop非常适合于包含大数据的大文件。
如果您在更大的文件上执行相同的查询,它的性能会更好。
尝试设置以下属性

set mapred.min.split.size=100000000; // u can set max.split.size for optimal performance.

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

set mapred.min.split.size=100000000;

尝试调整属性中的值以达到最佳Map器数

相关问题