执行一堆配置单元查询(构建DAG)

时间:2017-02-21 03:05:41

标签: sql hadoop hive workflow

背景

我希望执行一堆配置单元查询(大约20-30个查询,并且数量不断增加)。其中一些查询依赖于少数其他查询的结果,而其中一些查询可以并行执行。 (DAG)

问题

是否有工作流管理器可以负责构建DAG(给定一堆查询作为输入)并并行/顺序执行这些查询(以最优化的方式)。

同样的最佳做法是什么。

2 个答案:

答案 0 :(得分:1)

您可以使用任何工具进行工作流程管理。最佳实践取决于用例和专业知识。

传统上在公司: - 可以使用Control-M或cron调度程序。

来自大数据生态系统:oozie或azkaban

还有其他几种工具可用于工作流程管理。

答案 1 :(得分:1)

这也可以在shell脚本中轻松实现 您可以启动并行进程,等待它们,然后启动其他进程。 命令末尾的&符号指示shell运行后台进程。见这个例子:

#!/bin/bash

LOG_DIR=/tmp/my_log_dir

#Set fail counter before parallel processes 
FAIL=0
echo "Parallel loading 1, 2 and 3..."

hive -hiveconf "some_var"="$some_value" -f myscript_1.hql 2>&1 | tee $LOG_DIR/myscript_1.log &
hive -hiveconf "some_var"="$some_value" -f myscript_2.hql 2>&1 | tee $LOG_DIR/myscript_2.log &
hive -hiveconf "some_var"="$some_value" -f myscript_3.hql 2>&1 | tee $LOG_DIR/myscript_3.log &

#Wait for three processes to finish
for job in `jobs -p`
do
echo $job
wait $job || let "FAIL+=1"
done

#Exit if some process has failed
if [ "$FAIL" != "0" ];
then
echo "Failed processes=($FAIL) Giving up..."
exit 1
fi

#Set fail counter before parallel processes 
FAIL=0
echo "Continue with next parallel steps 4,5..."
hive -hiveconf "some_var"="$some_value" -f myscript_4.hql 2>&1 | tee $LOG_DIR/myscript_4.log &
#and so on

还有其他方法可以运行后台进程: https://www.codeword.xyz/2015/09/02/three-ways-to-script-processes-in-parallel/