Hadoop 配置单元中的多表联接
我已将Teradata表的数据迁移到hive中 现在,我必须在导入的数据之上构建摘要表。汇总表需要从五个源表中构建 如果我使用联接,我将需要联接五个表,在hive中是否可能?或者我应该把这个问题分成五个部分? 对于这个问题,什么是可取的方法Hadoop 配置单元中的多表联接,hadoop,hive,teradata,sqoop,Hadoop,Hive,Teradata,Sqoop,我已将Teradata表的数据迁移到hive中 现在,我必须在导入的数据之上构建摘要表。汇总表需要从五个源表中构建 如果我使用联接,我将需要联接五个表,在hive中是否可能?或者我应该把这个问题分成五个部分? 对于这个问题,什么是可取的方法 请建议是的,您可以在单个查询中找到。这使得Hive有很多机会进行优化,如果将其分解为单独的查询,这些优化是无法完成的。当然,Hive中的五路连接是可能的,而且(自然)可能会变慢到非常慢 您应该考虑在上对表进行联合分区 相同的分区列 相同数量的分区 其他选
请建议是的,您可以在单个查询中找到。这使得Hive有很多机会进行优化,如果将其分解为单独的查询,这些优化是无法完成的。当然,Hive中的五路连接是可能的,而且(自然)可能会变慢到非常慢
您应该考虑在
上对表进行联合分区- 相同的分区列
- 相同数量的分区
嘿,谢谢!!我正在研究如何提高hive join的性能query@chhayavishwakarma . 是的-这个答案提供了这些方法。谢谢Jeremy Beard!!我正在研究如何提高配置单元连接查询的性能,以优化的方式进行此类连接的最佳实践是什么
SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val, d.val, e.val
FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1) join d on (d.key = c.key) join e on (e.key = d.key)
SELECT /*+ MAPJOIN(b,c,d,e) */ a.val, b.val, c.val, d.val, e.val
FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)
join d on (d.key = c.key) join e on (e.key = d.key)