我有一个Shell脚本文件,可以解析数字和字符串变量。下面的示例:
Shell脚本
hive --hiveconf time_1=34600 --hiveconf time_2=34588 --hiveconf message="hello_world" -f mytask.hql
我也在相应文件'mytask.hql'中有一个Hive查询,如下所示:
HiveQL文件
SELECT col1, col2, ${hiveconf:message} AS myMessage
FROM table1
WHERE trtime between ${hiveconf:time_1} and ${hiveconf:time_2};
问题是我想在每一行中都包含一列包含消息“ Hello world”或任何外部变量(来自Unix Shell Script),但是我收到以下错误:
[错误10004]:第 xxx 行:无效的表别名或列引用“ hello_world” :(可能的列名称为:col1,col2 ...(等等)
我想要的输出是这样的:
答案 0 :(得分:1)
SQL中的字符串常量应使用单引号引起来:'${hiveconf:message}'
:
SELECT col1, col2, '${hiveconf:message}' AS myMessage
FROM table1
WHERE trtime between ${hiveconf:time_1} and ${hiveconf:time_2};
并且没有引号$ {hiveconf:message}在hello_world中得到了解决,没有引号看起来像是列,而不是常量,这就是为什么会出现这种异常的原因。