我有一个shell脚本来从MySQL to hdfs
导入数据,即sqoop
shell脚本。我想使用oozie
来安排sqoop导入作业。
该脚本具有以下sqoop query
sqoop import --connect ${domain}:${port}/${database} --username ${username} --password ${password} --query "select * from ${table} where \$CONDITIONS" -m 1 --hive-import --hive-database ${hivedatabase} --hive-table ${table} --target-dir /user/hive/warehouse/${hivedatabase}.db/${table}
我在另一个.sh
文件中包含了所有这些参数。现在我想在workflow.xml文件中传递这些参数。或者我应该在job.properties文件中传递这些参数。
参数${table}
是一个变量。有1000个表我想并行运行相同的脚本。
我该怎么做?请任何人解释
答案 0 :(得分:1)
Oozie不支持循环操作,即你不能在循环中多次调用相同的动作。
您的任务有多种方式。我建议如下:
既然你有一个动态生成并执行sqoop命令的shell脚本或java代码,你可以创建单个shell动作或java动作来通过oozie执行你的工作。
此外,并行运行太多sqoop作业可能会耗尽您的JVM内存并对性能产生影响。