如何在Hive中以严格模式实现笛卡尔积?

时间:2016-06-08 18:34:05

标签: hive cartesian

正如您所知,在严格模式下,Hive不允许使用笛卡尔积连接,但是我们可以在该模式下以其他方式实现吗?

1 个答案:

答案 0 :(得分:-2)

在严格模式下,不允许使用笛卡尔积。所以,你必须在ON子句中包含JOIN Condition而不是像这样的WHERE子句:

hive> SELECT * FROM fracture_act JOIN fracture_ads > WHERE fracture_act.planner_id = fracture_ads.planner_id;
FAILED: Error in semantic analysis:
In strict mode, cartesian product is not allowed. If you really want to perform the operation,
+set hive.mapred.mode=nonstrict+

这是一个使用JOIN和ON子句正确构造的查询:

hive> SELECT * FROM fracture_act JOIN fracture_ads > ON (fracture_act.planner_id = fracture_ads.planner_id); 

...正常结果......