我必须像在HIVE CLI中一样执行自动化的直线操作。以下是用于HIVE自动化任务的运行示例外壳脚本:
echo“正在使用new_db HIVE数据库.. !!”
蜂巢-e“使用new_db;”
回显“截断登台表测试...”
蜂巢-e“ TRUNCATE TABLE new_db.test;”
echo“将数据加载到临时表测试中”
蜂巢-e“将数据本地入口'/ <路径> /IDI.txt'装入表new_db.test;”
echo“将数据追加到历史记录表hist_test ..”
“ hive -e”插入表new_db.test中,从new_db.test中选择*,'$ unix_time';“
我想对beeline做类似的事情。我是直线的入门者。因此,我提出了以下内容。
#! / bin / bash
时间戳= $(日期+%Y-%m-%d-%H:%M:%S:%N)
unix_time = $(日期+%Y-%m-%d-%H:%M:%S)
回显“登录到BeeLine .. !!”
#beeline << EOF
beeline -u jdbc:hive2:// server:port,server:port,server:port /; serviceDiscoveryMode = zookeeper; zookeeperNamespace = hiveserver2; principal=hive/server@hello.COM << EOF -n <用户名> -p <密码>
回声“使用new_db HIVE数据库..!”
直线-e“使用new_db;”
回显“截断登台表测试...”
直线-e“截断表new_db.test;”
echo“将数据加载到临时表测试中”
beeline -e“将数据本地入口'/ <路径> /IDI.txt'装入表new_db.test;”
echo“将数据追加到历史记录表hist_test ..”
“ beeline -e”插入表new_db.test中,从new_db.test中选择*,'$ unix_time';“
紧急行动
++++++++++++++++++++++++++++
#! / bin / bash
导出BEELINE_PREFIX =“ jdbc:hive2:// server:port,server:port,server:port /; serviceDiscoveryMode = zookeeper; zookeeperNamespace = hiveserver2; principal=hive/server@hello.COM”
导出FILE_PATH =“ path_toFile / staging_hive_tables.hql”
直线-u $ BEELINE_PREFIX -f $ FILE_PATH
答案 0 :(得分:0)
尝试这样。
export BEELINE_PREFIX='beeline -u "jdbc:hive2://bigdataserver-xxxxxx.net:10000/;principal=hive/bigdataplatform-xxxxx.net@XYZ.NET;ssl=true" --silent=true --verbose=false --showHeader=false --outputformat=csv2 -e ' # set hive.cli.print.header=false;
export PARTY="xxxxx"
export load_date="20181003"
### Get the table count ###
########################################################################
export BEELINE_COMMAND="select count(*) from ${DMAR_HIVE_TABLE} where load='${PARTY}' and load_date=${yyymmdd} ; ";
echo "Hive command=$BEELINE_COMMAND"
${BEELINE_PREFIX}"${BEELINE_COMMAND}" | read table_count
check_count=$?
echo "Check count = $check_count"
echo "Table count = $table_count"
EDIT1:
双引号被遗漏了..用单引号将BEELINE PREFIX包裹起来 试试这个
#! /bin/bash
export BEELINE_PREFIX='"jdbc:hive2://server:port,server:port,server:port/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2;principal=hive/server@hello.COM"'
EDIT2:
我在命令提示符下运行了这些
> export BEELINE_PREFIX='"jdbc:hive2://xxxx:10000/;principal=hive/yyyyy@zzzzz;ssl=true" --silent=true --verbose=false --showHeader=false --outputformat=csv2 '
> cat /tmp/hive1.ql
select current_date;
> echo "beeline -u ${BEELINE_PREFIX} -f /tmp/hive1.ql " | sh -x
+ beeline -u 'jdbc:hive2://xxxx:10000/;principal=hive/yyyyy@zzzzz;ssl=true' --silent=true --verbose=false --showHeader=false --outputformat=csv2 -f /tmp/hive1.ql
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
2018-10-12
>
请注意,您需要回显命令并将其传递到外壳程序(sh)
回显“直线-u $ {BEELINE_PREFIX} -f /tmp/hive1.ql” | sh -x