【问题标题】:how to use Big SQL commands to automate the synchronization with HIVE through shell script?如何使用 Big SQL 命令通过 shell 脚本自动与 HIVE 同步?
【发布时间】:2018-08-29 10:30:40
【问题描述】:

我编写了一个小 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

我做错了什么?

【问题讨论】:

    标签: shell hive bigsql


    【解决方案1】:

    您需要将后面命令的输出重定向到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

    【讨论】:

      【解决方案2】:

      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 启用它:

      Enable Automatic Metadata Sync

      【讨论】:

        猜你喜欢
        • 2014-08-07
        • 2019-11-06
        • 2011-06-17
        • 1970-01-01
        • 2015-11-01
        • 1970-01-01
        • 2016-02-18
        • 1970-01-01
        • 2017-08-12
        相关资源
        最近更新 更多