Optimization 蜂巢-从两个表中抓取而不连接

Optimization 蜂巢-从两个表中抓取而不连接,optimization,join,hive,multiple-tables,Optimization,Join,Hive,Multiple Tables,在MySQL中,我可以从两个没有连接的表中进行选择,如下所示: SELECT t1.value, t2.value FROM t1, t2 WHERE (t1.value = t2.value); 另一方面,Hive将接受“从t1加入t2”,但不接受“从t1,t2”。) 有人对如何优化这样的查询有什么想法吗 SELECT t1.value, t2.value FROM t1 join t2 WHERE (t1.value = t2.value); 还有别的办法吗 (还有,为什么在MySQL中

在MySQL中,我可以从两个没有连接的表中进行选择,如下所示:

SELECT t1.value, t2.value FROM t1, t2 WHERE (t1.value = t2.value);
另一方面,Hive将接受“从t1加入t2”,但不接受“从t1,t2”。)

有人对如何优化这样的查询有什么想法吗

SELECT t1.value, t2.value FROM t1 join t2 WHERE (t1.value = t2.value);
还有别的办法吗


(还有,为什么在MySQL中从“select from t1 join t2”切换到“select from t1,t2”会优化查询?

为什么不使用连接?从两个表中进行选择并要求它们之间存在一些相等项,这将导致内部联接

另外,使用所使用的联接,您将创建两个表的笛卡尔积,并消除那些记录,其中
t1.value=t2.value
。直接使用内部联接将更有效:

SELECT t1.value, t2.value FROM t1 JOIN t2 ON t1.value=t2.value;
如果其中一个表非常小,则可以进行地图侧连接。小的表将被缓存在内存中,而大的表可以通过流传输,并且不需要缩减步骤。要激活地图端连接,必须执行
set-hive.auto.convert.join=true。映射端联接的最大表大小(以字节为单位)的阈值在属性
hive.mapjoin.smalltable.filesize
中设置

(来源:Edward Capriolo、Dean Wampler和Jason Rutherglen.编程蜂巢。
O'Reilly,2012。)

为什么不使用连接?从两个表中进行选择并要求它们之间存在一些相等项,这将导致内部联接

另外,使用所使用的联接,您将创建两个表的笛卡尔积,并消除那些记录,其中
t1.value=t2.value
。直接使用内部联接将更有效:

SELECT t1.value, t2.value FROM t1 JOIN t2 ON t1.value=t2.value;
如果其中一个表非常小,则可以进行地图侧连接。小的表将被缓存在内存中,而大的表可以通过流传输,并且不需要缩减步骤。要激活地图端连接,必须执行
set-hive.auto.convert.join=true。映射端联接的最大表大小(以字节为单位)的阈值在属性
hive.mapjoin.smalltable.filesize
中设置

(来源:Edward Capriolo、Dean Wampler和Jason Rutherglen.编程蜂巢。
O'Reilly,2012。)

谢谢你,工作很有魅力,尤其是在地图端加入!谢谢,工作起来很有魅力,特别是与地图边的加入!