0

我编写了一个小 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 命令提示符。现在,当我键入“退出”并按 Enter 时,它会给我以下消息:

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

我究竟做错了什么?

4

2 回答 2

0

您需要将以后命令的输出重定向到jsqsh命令中。例如看这个例子

您可以使用以下命令同时启动 JSqsh 并运行脚本:

/usr/ibmpacks/common-utils/current/jsqsh/bin/jsqsh bigsql < /home/bigsql/mySQL.sql

从这里https://www.ibm.com/support/knowledgecenter/en/SSCRJT_5.0.2/com.ibm.swg.im.bigsql.doc/doc/bsql_jsqsh.html

于 2018-09-25T11:36:20.683 回答
0

Big SQL 中已经有一个 auto-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 启用它:

启用自动元数据同步

于 2019-10-17T10:10:57.507 回答