Hive 我可以同时设置MAPJOIN提示和STREAMTABLE提示吗?

Hive 我可以同时设置MAPJOIN提示和STREAMTABLE提示吗?,hive,Hive,我可以这样用吗 select /*+ MAPJOIN(t2)*//*+ STREAMTABLE(t1)*/ t1.c1. t2.c1 from t1 left outer join t2 on t1.c1 = t2.c1; 我对不同连接键上的“STREAMTABLE”感到困惑 例如: t3为最大表,t2为次大表,t1为最小表 select /*+ STREAMTABLE(t2)*/ t1.c3, t2.c2, t3.c3 from t2 le

我可以这样用吗

select /*+ MAPJOIN(t2)*//*+ STREAMTABLE(t1)*/
       t1.c1.
       t2.c1
from t1 
left outer join t2
on t1.c1 = t2.c1;
我对不同连接键上的“STREAMTABLE”感到困惑

例如: t3为最大表,t2为次大表,t1为最小表

select 
  /*+ STREAMTABLE(t2)*/
  t1.c3,
  t2.c2,
  t3.c3 
from t2 
left outer join 
t1 
on t2.c1=t1.c1 
left outer join 
t3 on t2.c2=t3.c2;
所以当t2和t1连接时是可以的,但是当t2和t3连接时,如果t2仍然被当作一个大表来处理?
如何处理这种情况?

您可以通过以下方式实现:

select /*+ MAPJOIN(t2), STREAMTABLE(t1)*/
   t1.c1.
   t2.c1
from t1 
left outer join t2
on t1.c1 = t2.c1;

您可能仍然会遇到大量与CBO相关的缺陷,特别是根据我的经验,涉及窗口函数和列格式的缺陷。因此,知道如何有效地应用提示有些有用。

我认为我们不需要在这里提供MAPJOIN,因为除streamtable之外的其他表将缓冲/缓存到所有节点中。所以它会自动变成mapjoin

不要使用这些提示。基于成本的优化器将完成这项工作。使用基于成本的optimizer+统计。@leftjoin嗨,我该怎么做?我的配置单元版本是0.13.x?我该怎么做?升级。Tez上的0.14蜂巢运行速度更快,无需任何提示。