Pregunta

Tengo un problema al ejecutar la acción de oozie sqoop.En los registros puedo ver que sqoop puede importar datos al directorio temporal y luego crea scripts de colmena para importar datos.

Falla al importar datos temporales a Hive.

En los registros no obtengo ninguna excepción.

A continuación se muestra una acción de sqoop que estoy usando.

<workflow-app name="testSqoopLoadWorkflow" xmlns="uri:oozie:workflow:0.4">
<credentials>
    <credential name='hive_credentials' type='hcat'>
        <property>
            <name>hcat.metastore.uri</name>
            <value>${HIVE_THRIFT_URL}</value>
        </property>
        <property>
            <name>hcat.metastore.principal</name>
            <value>${KERBEROS_PRINCIPAL}</value>
        </property>
    </credential>
</credentials>
<start to="loadSqoopDataAction"/>
<action name="loadSqoopDataAction" cred="hive_credentials">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
             <job-xml>/tmp/hive-oozie-site.xml</job-xml>
        <configuration>
            <property>
                <name>oozie.hive.defaults</name>
                <value>/tmp/hive-oozie-site.xml</value>
            </property>
                  </configuration>
        <command>job --meta-connect ${SQOOP_METASTORE_URL} --exec TEST_SQOOP_LOAD_JOB</command>
    </sqoop>
    <ok to="end"/>
    <error to="kill"/>
</action>

A continuación se muestra un trabajo de sqoop que estoy usando para importar datos.

sqoop job --meta-connect ${SQOOP_METASTORE_URL} --create TEST_SQOOP_LOAD_JOB -- import --connect '${JDBC_URL}' --table testTable -m 1 --append --check-column pkId --incremental append --hive-import --hive-table testHiveTable;

En los registros mapeados obtengo la siguiente excepción.

72285 [main] INFO  org.apache.sqoop.hive.HiveImport  - Loading uploaded data into Hive
Intercepting System.exit(1)

<<< Invocation of Main class completed <<<

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

Oozie Launcher failed, finishing Hadoop job gracefully


Oozie Launcher ends

Por favor recomiende.

¿Fue útil?

Solución

Esto parece un típico Importación de Sqoop a Hive trabajo.Entonces parece que Sqoop importó datos exitosamente en HDFS y no puede cargar esos datos en Hive.

Aquí hay algunos antecedentes de lo que está sucediendo...Oozie inicia un trabajo separado (que se ejecutará en cualquier nodo de su clúster hadoop) para ejecutar el comando Sqoop.El comando Sqoop inicia un trabajo separado para cargar datos en HDFS.Luego, al final del trabajo de Sqoop, ejecuta un script de Hive para cargar esos datos en Hive.

Dado que, en teoría, esto se ejecuta desde cualquier nodo de su clúster de Hadoop, la CLI de Hive deberá estar disponible en cada nodo y comunicarse con el mismo metastore.Hive Metastore deberá ejecutarse en modo remoto.

El problema más normal es que Sqoop no puede comunicarse con el metastore correcto.Las principales razones de esto normalmente son:

  1. Servicio de metastore de Hive no está funcionando.Debería ejecutarse en modo remoto y debería iniciarse un servicio independiente.A continuación se muestra una forma rápida de comprobar si se está ejecutando:

    estado del metastore de colmena del servicio

  2. hive-site.xml no contiene hive.metastore.uris.Aquí hay un ejemplo hive-site.xml con hive.metastore.uris colocar:

    <configuration>
    ...
      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://sqoop2.example.com:9083</value>
      </property>
    ...
    </configuration>
    
  3. hive-site.xml no está incluido en su acción Sqoop (o sus propiedades).Intente agregar su hive-site.xml a un <file> elemento en su acción Sqoop.Aquí hay un ejemplo de flujo de trabajo.xml con <file> en eso:

    <workflow-app name="sqoop-to-hive" xmlns="uri:oozie:workflow:0.4">
        ...
        <action name="sqoop2hive">
            ...
            <sqoop xmlns="uri:oozie:sqoop-action:0.2">
                ...
                <file>/tmp/hive-site.xml#hive-site.xml</file>
            </sqoop>
            ...
        </action>
        ...
    </workflow-app>
    

Otros consejos

Esto parece ser un error en Sqoop.No estoy seguro de la JIRA #.Hortonworks mencionó que el problema aún no se resuelve incluso en la versión HDP 2.2.

@abeaamase - Quiero intentar usar su solución.

¿Solo desea verificar si la siguiente solución funciona bien para SQOOP + HIX Import en un solo trabajo de Oozie?

... ... ... /tmp/hive-site.xml#hive-site.xml ... ...

Si está utilizando CDH, entonces el problema puede deberse a los conflictos de dependencia de JAR METASTORE HIX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top