如何使用大型sql命令通过shell脚本自动化与hive的同步?

oxalkeyp  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(450)

我已经编写了一个小型shell脚本来自动化大型sql和hive同步。代码如下

  1. echo "Login to BigSql"
  2. <path to>/jsqsh bigsql --user=abc --password=pwd
  3. echo "login succesfull"
  4. echo "Syncing hive table <tbl_name> to Big SQL"
  5. call syshadoop.hcat_sync_objects('DB_name','tbl_name','a','REPLACE','CONTINUE');
  6. echo "Syncing hive table TRAINING_TRACKER to Big SQL Successfully"

不幸的是,我得到的信息是:

  1. Login to BigSql
  2. Welcome to JSqsh 4.8
  3. Type "\help" for help topics. Using JLine.

然后进入大sql命令提示符。现在,当我键入“quit”并按enter键时,它会显示以下消息:

  1. login succesful
  2. Syncing hive table <tbl_name> to Big SQL
  3. ./script.sh: line 10: call syshadoop.hcat_sync_objects(DB_name,tbl_name,a,REPLACE,CONTINUE): command not found

我做错什么了?

bkkx9g8r

bkkx9g8r1#

您需要将以后命令的输出重定向到 jsqsh 命令。e、 g.看这个例子
可以使用以下命令启动jsqsh并同时运行脚本:

  1. /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

6ss1mwsb

6ss1mwsb2#

在bigsql中已经有一个自动hcat同步作业,它正是您想要做的
检查作业是否正在运行

  1. su - bigsql (or whatever instance owner)
  2. db2 connect to bigsql
  3. db2 "select NAME, BEGIN_TIME, END_TIME, INVOCATION, STATUS from
  4. SYSTOOLS.ADMIN_TASK_STATUS where BEGIN_TIME > (CURRENT TIMESTAMP - 60 minutes)
  5. and name ='Synchronise MetaData Changes from Hive' "

如果看不到输出,只需通过ambari启用它:
启用自动元数据同步

相关问题