Domanda

Sto affrontando il problema mentre esegui l'azione Oozie Sqop. Nei registri posso vedere che Sqop è in grado di importare dati sulla directory temporanea, quindi Sqop crea script di alveare per importare i dati.

fallisce durante l'importazione di dati temporanei all'alveare.

nei registri non sto ottenendo alcuna eccezione.

Sotto è un'azione Sqop che sto 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>
.

Di seguito è riportato un lavoro Sqop che sto usando per importare i dati.

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;
.

In Mapred Logs Sto ricevendo successiva eccezione.

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
.

Si prega di suggerire.

È stato utile?

Soluzione

Questo sembra un tipico Sqoop Import to Hive Job. Quindi sembra che Sqop abbia importato con successo i dati in HDFS e non riesce a caricare che i dati nell'alveare.

Ecco alcuni sfondo su cosa sta succedendo ... Oozie lancia un lavoro separato (che eseguirà su qualsiasi nodo nel tuo cluster di Hadoop) per eseguire il comando sqoop. Il comando Sqoop avvia un lavoro separato per caricare i dati in HDFS. Quindi, alla fine del lavoro Sqoop, Sqoop gestisce uno script di alveare per caricare tali dati nell'alveare.

Poiché questo è teoricamente in esecuzione da qualsiasi nodo nel tuo cluster di Hadoop, Hive CLI dovrà essere disponibile su ciascun nodo e parlare con lo stesso metastore. Il metastore dell'alveare dovrà funzionare in modalità remota.

Il problema più normale è perché sqoop non può parlare con il metastore corretto. I principali motivi per questo sono normalmente:

    .
  1. Hive Metastore Servizio non è in esecuzione. Dovrebbe essere in esecuzione in modalità remota e dovrebbe essere avviato un servizio separato. Ecco un modo rapido per verificare se è in esecuzione:

    .

    Servizio Hive-Metastore Status

  2. hive-site.xml non contiene hive.metastore.uris. Ecco un esempio hive-site.xml con set di hive.metastore.uris:

    .
    <configuration>
    ...
      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://sqoop2.example.com:9083</value>
      </property>
    ...
    </configuration>
    
    .
  3. hive-site.xml non è incluso nell'azione Sqoop (o nelle sue proprietà). Prova ad aggiungere il tuo sito di hive.xml a un elemento <file> nell'azione Sqoop. Ecco un esempio di lavoro fflow.xml con <file> in esso:

    .
    <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>
    
    .

Altri suggerimenti

Questo sembra essere un bug in Sqop.Non sono sicuro del jira #.Hortonworks ha detto che il problema non è ancora risolto anche nella versione HDP 2.2.

@abeaamase - Voglio provare a usare la tua soluzione.

Vuoi solo controllare se la soluzione seguente funziona bene per Sqop + Hive Import in un unico lavoro di Oziende?

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

Se si utilizza CDH, il problema potrebbe essere dovuto ai conflitti di dipendenza da jar di Hive Metastore Jar.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top