【发布时间】:2016-03-23 17:31:43
【问题描述】:
我已经检查了相关线程 - How to set variables in HIVE scripts
在 hive 内部,变量工作正常:
hive> set hivevar:cal_month_end='2012-01-01';
hive> select ${cal_month_end};
但是当我通过命令行运行时:
$ hive -e "set hivevar:cal_month_end='2012-01-01';select '${cal_month_end}';"
它一直给我以下错误:
错误:java.lang.IllegalArgumentException:无法从以下位置创建路径 一个空字符串 在 org.apache.hadoop.fs.Path.checkPathArg(Path.java:131) 在 org.apache.hadoop.fs.Path.(Path.java:139) 在 org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.getPath(HiveInputFormat.java:110) 在 org.apache.hadoop.mapred.MapTask.updateJobWithSplit(MapTask.java:463) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:411) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:347) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:415) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1469) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
【问题讨论】: