3

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

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

它返回错误

FAILED: SemanticException [Error 10004]: Line 3:36 Invalid table alias or column reference 'p1': (可能的列名是: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 脚本?

4

1 回答 1

3

在调用 hive 时,您必须转义您的引号,例如-d arg_partition1=\"p1\"要使其正常工作。

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

于 2013-07-18T16:31:29.633 回答