Oozie 迭代工作流

Oozie iterative workflow

我正在构建一个应用程序以将数据从 MYSQL 数据库提取到配置单元 table。应用程序将被安排每天执行。

第一个动作是读取 Hive table 以加载导入 table 信息,例如名称、类型等,并在文件中创建 table 的列表以进口。接下来是一个 Sqoop 操作,按顺序为每个 table 传输数据。

是否可以创建一个 shell 脚本 Oozie 操作,它将遍历 table 列表并按顺序为每个 table 启动 oozie 子工作流 Sqoop 操作?你能提供一些参考吗?还有任何更好方法的建议!

我想出了以下包含 Sqoop 操作的 shell 脚本。它在一些环境变量调整下工作正常。

hdfs_path='hdfs://quickstart.cloudera:8020/user/cloudera/workflow/table_metadata'   table_temp_path='hdfs://quickstart.cloudera:8020/user/cloudera/workflow/hive_temp        

if $(hadoop fs -test -e $hdfs_path)
then
for file in $(hadoop fs -ls $hdfs_path | grep -o -e "$hdfs_path/*.*");
do
 echo ${file}
 TABLENAME=$(hadoop fs -cat ${file});
 echo $TABLENAME
 HDFSPATH=$table_temp_path
 sqoop import --connect jdbc:mysql://quickstart.cloudera:3306/retail_db --table departments --username=retail_dba --password=cloudera --direct -m 1 --delete-target-dir --target-dir $table_temp_path/$TABLENAME
done
fi