有人可以解释一下如何从hive调用shell脚本吗?我对此进行了探讨,发现我们必须使用source FILE
命令从hive调用shell脚本。但我不确定我是如何使用source File
命令从hive调用我的shell脚本的。有人可以帮我这个吗?在此先感谢。
答案 0 :(得分:2)
要通过HIVE CLI调用shell脚本,请查看以下示例。
!sh file.sh;
或
!./file.sh;
请访问以下链接中的 Hive Interactive Shell命令部分以获取更多信息。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli
答案 1 :(得分:2)
使用! <command> - Executes a shell command from the Hive shell.
<强> test_1.sh:强>
#!/bin/sh
echo "This massage is from $0 file"
<强>蜂房test.hql:强>
! echo showing databases... ;
show databases;
! echo showing tables...;
show tables;
! echo runing shell script...;
! /home/cloudera/test_1.sh
<强>输出:强>
$ hive -v -f hive-test.hql
showing databases...
show databases
OK
default
retail_edw
sqoop_import
Time taken: 0.997 seconds, Fetched: 3 row(s)
showing tables...
show tables
OK
scala_departments
scaladepartments
stack
stackover_hive
Time taken: 0.062 seconds, Fetched: 4 row(s)
runing shell script...
This massage is from /home/cloudera/test_1.sh file
答案 2 :(得分:0)
不知道它是否适合您,但您可以通过从bash shell启动hive命令并结合hive查询结果来反转您的问题。您甚至可以为此创建一个bash脚本,以便将hive查询与bash命令组合在一个脚本中:
#!/bin/bash
hive -e 'SELECT count(*) from table' > temp.txt
cat temp.txt