如您所知,在严格模式下,Hive 不允许笛卡尔乘积连接,但我们可以在该模式下以另一种方式实现它吗?
在严格模式下,不允许使用笛卡尔积。因此,您必须在 ON 子句中包含 JOIN 条件,而不是像这样包含 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);
。正常结果...