我写了一个小的shell脚本来自动化Big SQL和HIVE同步。 代码如下
echo "Login to BigSql"
<path to>/jsqsh bigsql --user=abc --password=pwd
echo "login succesfull"
echo "Syncing hive table <tbl_name> to Big SQL"
call syshadoop.hcat_sync_objects('DB_name','tbl_name','a','REPLACE','CONTINUE');
echo "Syncing hive table TRAINING_TRACKER to Big SQL Successfully"
不幸的是,我收到消息:
Login to BigSql
Welcome to JSqsh 4.8
Type "\help" for help topics. Using JLine.
然后进入Big SQL命令提示符。现在,当我键入“ quit”并按回车键时,它会显示以下消息:
login succesful
Syncing hive table <tbl_name> to Big SQL
./script.sh: line 10: call syshadoop.hcat_sync_objects(DB_name,tbl_name,a,REPLACE,CONTINUE): command not found
我在做什么错了?
答案 0 :(得分:0)
您需要将以后的命令输出重定向到jsqsh
命令中。例如。看到这个例子
您可以使用以下命令启动JSqsh并同时运行脚本:
/usr/ibmpacks/common-utils/current/jsqsh/bin/jsqsh bigsql < /home/bigsql/mySQL.sql
答案 1 :(得分:0)
Big SQL中已经有一个自动hcat同步作业,可以完全执行您要尝试的操作
检查作业是否正在运行
su - bigsql (or whatever instance owner)
db2 connect to bigsql
db2 "select NAME, BEGIN_TIME, END_TIME, INVOCATION, STATUS from
SYSTOOLS.ADMIN_TASK_STATUS where BEGIN_TIME > (CURRENT TIMESTAMP - 60 minutes)
and name ='Synchronise MetaData Changes from Hive' "
如果没有看到输出,只需通过Ambari启用它: