我正在构建一个应用程序来将数据从MYSQL DB提取到hive表。应用程序将安排每天执行。
第一个操作是读取Hive表以加载导入表信息,例如名称,类型等,并在要导入的文件中创建表的列表。接下来是Sqoop动作,按顺序传输每个表的数据。
是否可以创建一个shell脚本Oozie动作,它将遍历表列表并按顺序为每个表启动oozie子工作流Sqoop操作?你能提供一些参考吗?还有任何更好的方法的建议!
答案 0 :(得分: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