简体   繁体   English

将Hive查询输出存储在Shell脚本变量中

[英]Storing hive query output in a shell script variable

When i try to execute the below 2 queries via shell script, I'm unable to echo the output: 当我尝试通过shell脚本执行以下2条查询时,我无法回显输出:

Querys: 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

Error: 错误:

2017-11-03 00:55:11,505 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1011)) - mapred.input.dir.recursive is deprecated. 2017-11-03 00:55:11,505 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011))-已弃用mapred.input.dir.recursive。 Instead, use 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 deprecated. 相反,请使用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为弃用。 Instead, use mapreduce.input.fileinputformat.split.maxsize 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1011)) - mapred.min.split.size is deprecated. 相反,请使用mapreduce.input.fileinputformat.split.maxsize 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011))-不建议使用mapred.min.split.size。 Instead, use 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.rack is deprecated. 相反,请使用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。机架已弃用。 Instead, use 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 is deprecated. 相反,请使用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。 Instead, use 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 deprecated. 而是使用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是弃用。 Instead, use mapreduce.job.reduces 2017-11-03 00:55:11,508 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1011)) - mapred.reduce.tasks.speculative.execution is deprecated. 相反,请使用mapreduce.job.reduces 2017-11-03 00:55:11,508信息[main] Configuration.deprecation(Configuration.java:warnOnceIfDeprecated(1011))-不推荐使用mapred.reduce.tasks.speculative.execution。 Instead, use mapreduce.reduce.speculative 2017-11-03 00:55:11,715 WARN [main] conf.HiveConf (HiveConf.java:initialize(1155)) - DEPRECATED: Configuration property hive.metastore.local no longer has any effect. 相反,请使用mapreduce.reduce.speculative 2017-11-03 00:55:11,715警告[main] conf.HiveConf(HiveConf.java:initialize(1155))-已弃用:配置属性hive.metastore.local不再起作用。 Make sure to provide a valid value for hive.metastore.uris if you are connecting to a remote metastore. 如果要连接到远程元存储,请确保为hive.metastore.uris提供有效值。 1 ./run_daily_jobs_night.sh: line 42: [: too many arguments 1 ./run_daily_jobs_night.sh:第42行:[:参数过多

I'm not sure of what you're expecting to do with the close_val value but in your situation you seem to expect a number however it seems there's an issue in hive and you get a stacktrace instead. 我不确定您期望使用close_val值做什么,但是在您的情况下,您似乎期望一个数字,但是似乎在蜂巢中存在问题,而是获得了堆栈跟踪。 The trace received is not a simple string but is viewed as several parameters to your echo which exceed the number it handles. 收到的跟踪不是一个简单的字符串,而是被视为回声的多个参数,这些参数超过了它处理的数量。

using a command like: 使用如下命令:

$ # 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)

will insure that your echo command will work, but here your real issue is your hive command which is failing 将确保您的echo命令将正常工作,但是这里真正的问题是您的蜂巢命令失败了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM