当我用命令运行配置单元脚本时
配置单元-d arg\u partition1=“p1”-f test.hql
它返回错误
失败:semanticexception[错误10004]:行3:36无效的表别名或列引用“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};
如果我将分区修改为整数,那么它工作正常并返回正确的结果。
如何使用字符串参数运行配置单元脚本?
1条答案
按热度按时间dm7nw8vv1#
在调用配置单元时,必须对引号进行转义,例如
-d arg_partition1=\"p1\"
为了让它起作用。但是,我不明白为什么在任何情况下都必须在替换字符串中添加引号。假设您在编写查询时知道字段的数据类型,那么
partition1
是一个字符串,然后在查询中包含引号,例如WHERE partition1="${arg_partition1}";
如果是整数,就把它们完全去掉。