Mysql 如何在Oozie协调器中为shell变量中的返回结果编写配置单元脚本?

Mysql 如何在Oozie协调器中为shell变量中的返回结果编写配置单元脚本?,mysql,shell,hadoop,hive,oozie,Mysql,Shell,Hadoop,Hive,Oozie,然后我在Oozie中协调我的script.sh,变量S中没有任何内容。 这是shell脚本 S=$(hive -S -hiveconf MY_VAR1=$DB -hiveconf MY_VAR2=$avgpay -hiveconf MY_VAR3=$Date_LastDay -hiveconf MY_VAR4=$Date_LastNmonth -f bpxp.hql) echo $S "S" S1=( $( for k in $S ; do echo $k ; done ) ) c

然后我在Oozie中协调我的script.sh,变量S中没有任何内容。 这是shell脚本

S=$(hive -S -hiveconf MY_VAR1=$DB -hiveconf MY_VAR2=$avgpay -hiveconf MY_VAR3=$Date_LastDay -hiveconf MY_VAR4=$Date_LastNmonth -f bpxp.hql)

echo $S "S"


S1=( $( for k in $S ; do echo $k ; done ) )
    cntn=${#S1[@]}
    for (( p=0 ; p<$cntn; p=p+5 ))
 do
     `mysql -h$mysqlhost -u$mysqluser -p$mysqlpass $mysqldb -e "INSERT INTO weekstat (timeshift, partnerid, avg_value, processdate, weekday) VALUES ('${S1[p]}', '${S1[p+1]}', '${S1[p+2]}', '${S1[p+3]}', '${S1[p+4]}');"`
done
然后我从shell运行脚本,它工作正常。我尝试使用bpxp.hql,但不使用${hiveconf:MY_VAR1}.weekstat中的行hive-e select*;并将其写入shell S=hive-e select*from$DB.weekstat;但一切都没有改变。
我的错误在哪里?

无论你做什么,都是一种有效的方法,但下面提到的微小变化:

S=$(hive -S -hiveconf MY_VAR1=$DB -hiveconf MY_VAR2=$avgpay -hiveconf MY_VAR3=$Date_LastDay -hiveconf MY_VAR4=$Date_LastNmonth -f bpxp.hql)
在bpxp.hql中保留查询

select * from $DB.weekstat;
您不需要在hql脚本中提到hive-e,上面的命令将自动执行并提供输出,并存储到S中


如果我错了,请让我更正。

现在我从${hiveconf:MY_VAR1}.weekstat;在bpxp.hql中,变量S中的最后一个输出是Stdoutput Moved:'hdfs://nameservice1/~/weekstat/weekday=2'到垃圾箱:hdfs://nameservice1/~.Trash/Current S。这是从$DB.weekstat中选择*之前的上一个命令;我将.hql文件拆分为bpxp.hql和bpxpsel.hql,其中包含来自${hiveconf:MY_VAR1}.weekstat的select*;现在我有了P=$hive-S-hiveconf MY_VAR1=$DB-hiveconf MY_VAR2=$avgpay-hiveconf MY_VAR3=$Date\u LastDay-hiveconf MY_VAR4=$Date\u lastnm-f bpxp.hql S=$hive-S-hiveconf MY_VAR1=$DB-f bpxpsel.hql并获取此异常-异常失败,异常为java.io.io.remoteioexception:org.apache.hadoop.ipc.ipc.exceptionjava.io:IOException:Delegation-Token仅使用kerberos或web身份验证发布。我应该为kerberos身份验证创建密钥表吗?
select * from $DB.weekstat;