我正在尝试使用Shell脚本运行一些配置单元代码。但是我需要在调用直线之前进行一些数组操作。我尝试在shell中进行数组操作,但遇到了问题。现在,另一个选择是使用python进行数组操作,然后将我的变量传递给shell脚本,然后再将它们传递给hive。是我正在尝试做的POC,看是否有可能。
如果有一种方法可以在shell脚本中捕获table_name var值,将很有帮助。
Python代码:
from subprocess import Popen
table_name='abcd'
Process=Popen(['/users/${whoami}/username/run.sh',str(table_name)],shell=True)
Shell脚本:(run.sh)
process_name=run_smaple
log_path=/users/$(whoami)/username
script_path=/users/$(whoami)/username
schema_name=dev_env
suffix=$(date +'%d-%m-%Y_%H:%M:%S')
log_file=${log_path}/${process_name}_${suffix}.log
beeline_cont="jdbc:hive2...... "
beeline -u ${beeline_cont} \
--hiveconf hive.execution.engine=mr \
--hiveconf mapred.job.queuename=ent\
--hivevar script=${script} \
--hivevar schema_name=${schema_name} \
--hivevar table_name=${table_name} \
-f ${script_path}/sample.hql &>> $log_file
配置单元(sample.hql)
select count(*) from ${schema_name}.${table_name};
无法识别“ dev_env”附近的输入。表格名称中的''(状态= 42000,代码= 40000)