我有一个sqoop操作,它从postgres数据库中提取数据,然后导入到hive表中。当我执行oozie工作流程时,scoop将数据从postgres拉入HDFS。但它无法将数据导入到hive表中。日志没有用,因为我只是从oozie Web控制台UI获取Main类[org.apache.oozie.action.hadoop.SqoopMain],退出代码[1]。我们可以在sqoop操作中实际执行hive导入吗?或者,在sqoop导入HDFS后,我是否必须单独执行Hive操作?
<action name="ads-sqoop-import">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>dbIP</name>
<value>${dbIP}</value>
</property>
<property>
<name>dbPort</name>
<value>${dbPort}</value>
</property>
<property>
<name>dbUserName</name>
<value>${dbUserName}</value>
</property>
<property>
<name>dbPassword</name>
<value>${dbPassword}</value>
</property>
<property>
<name>hive_db_name</name>
<value>${hive_db_name}</value>
</property>
<property>
<name>scoop_target_dir</name>
<value>${scoop_target_dir}</value>
</property>
<property>
<name>dbName</name>
<value>${dbName}</value>
</property>
</configuration>
<command>import --connect jdbc:postgresql://${dbIP}:${dbPort}/${dbName} --username ${dbUserName} --password "${dbPassword}" --table ads --hive-table ${hive_db_name}.ads --create-hive-table --hive-import -m 1 --target-dir ${scoop_target_dir}/ads
</command>
</sqoop>
<ok to="orders-sqoop-import"/>
<error to="kill"/>
</action>
答案 0 :(得分:1)
我必须将hive-site.xml的位置添加到sqoop操作以使hive导入工作。 Oozie需要像Metastore目录等hive默认值才能将数据导入hive。在全局部分下添加以下代码,或者在您希望执行配置单元功能的任何位置添加操作。将hive-site.xml复制到HDFS并包含它。
<job-xml>hdfs://namenode/hive-site.xml</job-xml>