Hadoop Oozie迭代工作流

Hadoop Oozie迭代工作流,hadoop,oozie,oozie-coordinator,Hadoop,Oozie,Oozie Coordinator,我正在构建一个应用程序,将数据从MYSQL数据库摄取到配置单元表。应用程序将被安排每天执行 第一个操作是读取配置单元表以加载导入表信息,例如名称、类型等,并在要导入的文件中创建表列表。接下来是一个Sqoop操作,用于按顺序传输每个表的数据 是否可以创建一个shell脚本Oozie action,该脚本将遍历表列表并依次为每个表启动Oozie子工作流Sqoop action?你能提供一些参考吗?还有任何更好的方法的建议 我想出了以下包含Sqoop操作的shell脚本。通过一些环境变量调整,它可以正

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

第一个操作是读取配置单元表以加载导入表信息,例如名称、类型等,并在要导入的文件中创建表列表。接下来是一个Sqoop操作,用于按顺序传输每个表的数据


是否可以创建一个shell脚本Oozie action,该脚本将遍历表列表并依次为每个表启动Oozie子工作流Sqoop action?你能提供一些参考吗?还有任何更好的方法的建议

我想出了以下包含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

为什么不直接使用hive和sqoop操作而不是shell操作呢?我想遍历表列表,这就是我使用shell操作的原因。shell脚本操作应启动子工作流,并使用scoop操作为每个表进行增量导入。