面对在hadoop中连接3个表的问题,其中最左边的表有10M记录,每个右表有1M个记录。最右边的表与父表保持连接。
SELECT distinct Table1.cid,Table2.gdtyp,Table3.ager,Table3.edcd FROM (SELECT
distinct(cid) FROM Table1 WHERE Table1.orgcd='T002' AND
(Table1.cacttrdt>=19980101 AND Table1.cacttrdt<=20171120) limit 2) Table1
LEFT JOIN Table2 Table2 ON (Table2.cid=Table1.cid) LEFT JOIN Table3 Table3
ON (Table3.cid=Table1.cid)
以上查询在mapreduce期间卡住了。 已将自动转换连接设置为false。
答案 0 :(得分:1)
矢量化查询执行通过一次批量执行1024行而不是每行一行来提高连接,扫描,聚合和过滤器等操作的性能。
在Hive 0.13中引入,此功能显着缩短了查询执行时间,并可通过两个参数设置轻松启用:
设置hive.vectorized.execution.enabled = true; set hive.vectorized.execution.reduce.enabled = true;
还使用TEZ作为执行引擎而不是Mapreduce。