【问题标题】:Oozie iterative workflowOozie 迭代工作流
【发布时间】:2017-01-24 16:57:16
【问题描述】:

我正在构建一个应用程序来将 MYSQL DB 中的数据提取到配置单元表中。应用程序将被安排每天执行。

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

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

【问题讨论】:

  • 为什么不直接使用 hive 和 sqoop 操作而不是 shell 操作。
  • 我想遍历表列表,这就是我使用 shell 操作的原因。 shell 脚本操作应该启动子工作流,其中包含用于每个表的增量导入的 scoop 操作。

标签: hadoop oozie oozie-coordinator


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多