我正在尝试使用hiveconf参数将制表符分隔文件加载到HIVE文本文件表中,如下所示 -
load data local inpath '${hiveconf:TEXT_FILE}' into table ${hiveconf:HIVE_TABLE};
但是当我运行这个.hql文件时如下
hive -hiveconf DB=$DB TEXT_FILE="$text_file_name" HIVE_TABLE=$HIVE_TABLE -f file_load.hql
我收到以下错误 -
NoViableAltException(16@[202:1: tableName : (db= identifier DOT tab= identifier -> ^( TOK_TABNAME $db $tab) |tab= identifier -> ^( TOK_TABNAME $tab) );])
at org.antlr.runtime.DFA.noViableAlt(DFA.java:158)
......
......
FAILED: ParseException line X:YY cannot recognize input near '$' '{' 'hiveconf' in table name
我在谷歌搜索并了解它是由于hive关键字,但我已经成功创建了表格,当我通过硬编码文件名和表名加载文件时,数据被加载!请帮帮我!
谢谢!
答案 0 :(得分:1)
您错误地传递了上下文变量。在每个变量之前它应该是-hiveconf
:
hive -hiveconf DB=$DB -hiveconf TEXT_FILE="$text_file_name" -hiveconf HIVE_TABLE=$HIVE_TABLE -f file_load.hql