带有hive导入的oozie sqoop操作

时间:2015-01-02 10:49:56

标签: hive sqoop oozie

我有一个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 &quot;${dbPassword}&quot; --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>

1 个答案:

答案 0 :(得分:1)

我必须将hive-site.xml的位置添加到sqoop操作以使hive导入工作。 Oozie需要像Metastore目录等hive默认值才能将数据导入hive。在全局部分下添加以下代码,或者在您希望执行配置单元功能的任何位置添加操作。将hive-site.xml复制到HDFS并包含它。

<job-xml>hdfs://namenode/hive-site.xml</job-xml>