在地图上运行配置单元查询时,我的工作停留在特定阶段。我不知道为什么它运行速度很慢。
我无法提出整个查询,但会发布部分内容。我已经有一个名为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在第二个查询中执行交叉产品,而我已经给出了条件,而在第一个查询中一切运行良好,即使数据大小更多。
如果有人给我更多关于查询的信息,那么它会有所帮助。我是一个非常新的地图减少,是的,这个问题来自我的工作。
欢迎编辑...... !! 感谢。