gpt4 book ai didi

hadoop - 使用变量替换 (-d|--define) 的 Hive 参数因字符串参数而失败

转载 作者:可可西里 更新时间:2023-11-01 14:31:55 25 4
gpt4 key购买 nike

当我使用命令运行配置单元脚本时

hive -d arg_partition1="p1" -f test.hql

返回错误

FAILED: SemanticException [Error 10004]: Line 3:36 Invalid table alias or column reference 'p1': (possible column names are: line, partition1)

名为 test.hql 的脚本

DROP TABLE IF EXISTS test;
CREATE EXTERNAL TABLE IF NOT EXISTS test (Line STRING)
PARTITIONED BY (partition1 STRING);
ALTER TABLE test ADD PARTITION (partition1="p1") LOCATION '/user/test/hive_test_data';
SELECT * FROM test WHERE partition1=${arg_partition1};

如果我将分区修改为整数,那么它可以正常工作并返回正确的结果。

如何使用字符串参数运行 Hive 脚本?

最佳答案

调用 hive 时,您必须转义引号,例如 -d arg_partition1=\"p1\" 才能正常工作。

但是,我不明白为什么在任何情况下都必须将引号添加到替换字符串中。假设您在编写查询时知道字段的数据类型,因此如果 partition1 是字符串,则在查询中包含引号,例如 WHERE partition1="${arg_partition1}"; 如果它是一个整数,则将它们完全排除在外。

关于hadoop - 使用变量替换 (-d|--define) 的 Hive 参数因字符串参数而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728836/

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