我正在尝试使用无ON
属性的JOIN
运行此查询。
我正在运行以下查询:
hive -v -f my_file.hql
我收到了此消息:
在严格的模式下,不允许笛卡尔产品。如果你真的想要 要执行操作,请设置hive.mapred.mode = nountrict
i更新HQL文件:
set hive.mapred.mode=nonstrict
上方。
,但后来我得到了此消息:
设置hive.mapred.mode = ntrress QUERY返回的非零代码:1,原因: 无法在运行时修改hive.mapred.mode。它在列表中 在运行时无法修改的参数
我如何解决这个问题?
ps:我想做这个cartesian product
。
我如何实现它?我可以在哪里设置此变量hive.mapred.mode
工作?
您已经知道在严格模式下不允许笛卡尔产品(出于充分的理由)。在您的用例中,您似乎没有权限可以更改这些类型的蜂巢设置。
要解决这个问题,您可以做的就是以下内容。首先创建两个新表
create table new_1 as SELECT *,1 as join_key from table1;
create table new_2 as SELECT *,1 as join_key2 from table2;
然后在此join_key
上加入这些表。结果将是笛卡尔产品,因为它将与table1
的每一行匹配table2
的每一行。
select * from new_1 join new_2 on join_key=join_key2
刚刚发现使用-HiveConf解决了问题:
hive -v -f my_file.hql --hiveconf hive.mapred.mode=nonstrict
将允许nonstrict mode
专门用于此查询。