gpt4 book ai didi

hadoop - 如何允许 hive.mapred.mode=nonstrict?

转载 作者:可可西里 更新时间:2023-11-01 14:42:33 24 4
gpt4 key购买 nike

我正在尝试使用不带 ON 属性的 JOIN 运行此查询。

我正在运行这样的查询:

hive -v -f  my_file.hql

我收到这条消息:

In strict mode, cartesian product is not allowed. If you really want to perform the operation, set hive.mapred.mode=nonstrict

我更新了 hql 文件:
在其之上设置 hive.mapred.mode=nonstrict

但后来我收到了这条消息:

SET hive.mapred.mode=nonstrict Query returned non-zero code: 1, cause: Cannot modify hive.mapred.mode at runtime. It is in the listof parameters that can't be modified at runtime

我该如何解决这个问题?

ps: 我想做这个笛卡尔积

我如何实现它?我在哪里可以设置此变量 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

将专门针对此查询允许非严格模式

关于hadoop - 如何允许 hive.mapred.mode=nonstrict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com