将hive查询输出存储在shell脚本变量中

时间:2017-11-03 06:47:18

标签: bash shell hadoop hiveql

当我尝试通过shell脚本执行以下2个查询时,我无法回显输出:

Querys:

close_val=`hive -e "select count(1) from tst_db.dim_calendar where calendar_id =20171102"`
close_val=$(hive -S -e "USE cars_dev; select count(1) from dim_calendar where calendar_id =20171103")

echo $close_val

错误:

  

2017-11-03 00:55:11,505 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - 不推荐使用mapred.input.dir.recursive。相反,请使用mapreduce.input.fileinputformat.input.dir.recursive 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)))mapred.max.split.size is弃用。相反,请使用mapreduce.input.fileinputformat.split.maxsize 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - 不推荐使用mapred.min.split.size。相反,请使用mapreduce.input.fileinputformat.split.minsize 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - mapred.min.split.size.per。机架已弃用。相反,请使用mapreduce.input.fileinputformat.split.minsize.per.rack 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - mapred.min.split。 size.per.node已弃用。相反,请使用mapreduce.input.fileinputformat.split.minsize.per.node 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - mapred.reduce.tasks is弃用。相反,请使用mapreduce.job.reduces 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011)) - 不推荐使用mapred.reduce.tasks.speculative.execution。相反,使用mapreduce.reduce.speculative 2017-11-03 00:55:11,715 WARN [main] conf.HiveConf(HiveConf.java:initialize(1155)) - 弃用:配置属性hive.metastore.local不再有任何影响。如果要连接到远程Metastore,请确保为hive.metastore.uris提供有效值。 1       ./run_daily_jobs_night.sh:第42行:[:参数太多

1 个答案:

答案 0 :(得分:1)

我不确定你对close_val值的期望是什么,但在你的情况下,你似乎期待一个数字,但是它似乎在hive中存在问题,而你得到的是堆栈跟踪。 收到的跟踪不是一个简单的字符串,但被视为回显的几个参数,超出了它处理的数量。

使用如下命令:

$ # Notice the cut at the end of the command
$ close_val=$(hive -S -e "USE cars_dev; select count(1) from dim_calendar where calendar_id =20171103" | cut -f 1)

将确保您的echo命令可以正常工作,但是您的真正问题是您的hive命令失败