HIV中的交叉产品

时间:2018-04-22 21:11:12

标签: hadoop hive mapreduce hiveql

在地图上运行配置单元查询时,我的工作停留在特定阶段。我不知道为什么它运行速度很慢。

我无法提出整个查询,但会发布部分内容。我已经有一个名为TICKET_V和TICKET_R的表。现在我的查询是......

INSERT OVERWRITE TABLE TICKET_V SELECT * FROM CUSTOMER AS A LEFT OUTER JOIN TICKET_R AS B ON A.TICKET_NO= B.TICKET_NO LEFT OUTER JOIN TICKET_X AS C ON A.COMPANY_ID = C.COMPANY_ID WHERE SOME CONDITION

这里TICKET_R,CUSTOMER,TICKET_X表分别有55M,20M,2M Rows。一切运行顺利,得到一个0.8M行的TICKET_V表。

现在我运行另一个查询,该查询取决于后面的TICKET_V ......

INSERT OVERWRITE TABLE TICKET_R SELECT * FROM CUSTOMER_R AS C LEFT OUTER JOIN TICKET_R AS D ON C.TICKET_NO = D.TICKET_NO WHERE SOME CONDITION

CUSTOMER_R有大约2M行。

在hive控制台上运行此查询后首先我收到如下警告:
Warning: Map Join MAPJOIN[57][bigTable=?] in task 'stage-14: MAPRED' is a cross product Warning: Shuffle Join JOIN[31][table=[table alias names]] in stage 'Stage-2: MAPRED' is a cross product

我不明白为什么hive在第二个查询中执行交叉产品,而我已经给出了条件,而在第一个查询中一切运行良好,即使数据大小更多。

如果有人给我更多关于查询的信息,那么它会有所帮助。我是一个非常新的地图减少,是的,这个问题来自我的工作。

欢迎编辑...... !! 感谢。

0 个答案:

没有答案
相关问题