如何允许hive.mapred.mode = nounctrict



我正在尝试使用无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专门用于此查询。

最新更新