Question

Je suis confronté à un problème lors de l'exécution de l'action oozie sqoop.Dans les journaux, je peux voir que sqoop est capable d'importer des données dans le répertoire temporaire, puis sqoop crée des scripts Hive pour importer des données.

Il échoue lors de l’importation de données temporaires dans la ruche.

Dans les journaux, je ne reçois aucune exception.

Vous trouverez ci-dessous une action sqoop que j'utilise.

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

Vous trouverez ci-dessous un travail sqoop que j'utilise pour importer des données.

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;

Dans les journaux mapred, j'obtiens l'exception suivante.

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

Veuillez suggérer.

Était-ce utile?

La solution

Cela semble être typique Importation Sqoop vers Hive emploi.Il semble donc que Sqoop ait réussi à importer des données dans HDFS et ne parvient pas à charger ces données dans Hive.

Voici un aperçu de ce qui se passe...Oozie lance une tâche distincte (qui s'exécutera sur n'importe quel nœud de votre cluster hadoop) pour exécuter la commande Sqoop.La commande Sqoop démarre une tâche distincte pour charger les données dans HDFS.Ensuite, à la fin du travail Sqoop, sqoop exécute un script Hive pour charger ces données dans Hive.

Étant donné que cela s'exécute théoriquement à partir de n'importe quel nœud de votre cluster Hadoop, la CLI hive devra être disponible sur chaque nœud et communiquer avec le même métastore.Le Hive Metastore devra fonctionner en mode distant.

Le problème le plus normal est que Sqoop ne peut pas communiquer avec le bon métastore.Les principales raisons en sont normalement :

  1. Service de métastore Hive ne fonctionne pas.Il doit fonctionner en mode distant et un service distinct doit être démarré.Voici un moyen rapide de vérifier s'il fonctionne :

    statut de la ruche-métastore du service

  2. hive-site.xml ne contient pas hive.metastore.uris.Voici un exemple hive-site.xml avec hive.metastore.uris ensemble:

    <configuration>
    ...
      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://sqoop2.example.com:9083</value>
      </property>
    ...
    </configuration>
    
  3. hive-site.xml n'est pas inclus dans votre action Sqoop (ou ses propriétés).Essayez d'ajouter votre hive-site.xml à un <file> élément dans votre action Sqoop.Voici un exemple de workflow.xml avec <file> dedans :

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

Autres conseils

Cela semble être un bogue dans SQOP.Je ne suis pas sûr de la JIRA #.Hortonworks a mentionné que le problème n'est toujours pas résolu, même dans la version HDP 2.2.

@Abeaamase - Je veux essayer d'utiliser votre solution.

Voulez-vous simplement vérifier si la solution de la solution fonctionne bien pour SQOP + HIVE IMPORT IMPORTER EN UN SOYEN EST OZIE?

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

Si vous utilisez un CDH, un problème peut être dû aux conflits de dépendance de la HIVE métastore JAR.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top