при выполнении действия oozie Sqoop не удается импортировать данные в hive

StackOverflow https://stackoverflow.com//questions/24056863

Вопрос

Я столкнулся с проблемой при выполнении действия oozie sqoop.В журналах я вижу, что sqoop может импортировать данные во временный каталог, затем sqoop создает скрипты hive для импорта данных.

При импорте временных данных в hive происходит сбой.

В журналах я не получаю никаких исключений.

Ниже приведено действие sqoop, которое я использую.

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

Ниже приведено задание sqoop, которое я использую для импорта данных.

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;

В журналах mapred я получаю следующее исключение.

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

Пожалуйста, предложите.

Это было полезно?

Решение

Это кажется типичным Импорт Sqoop в Hive работа.Таким образом, похоже, что Sqoop успешно импортировал данные в HDFS и не может загрузить эти данные в Hive.

Вот некоторая предыстория того, что происходит...Oozie запускает отдельное задание (которое будет выполняться на любом узле в вашем кластере hadoop) для выполнения команды Sqoop.Команда Sqoop запускает отдельное задание для загрузки данных в HDFS.Затем, в конце задания Sqoop, sqoop запускает скрипт hive для загрузки этих данных в Hive.

Поскольку теоретически это выполняется с любого узла в вашем кластере Hadoop, интерфейс командной строки hive должен быть доступен на каждом узле и взаимодействовать с одним и тем же хранилищем метафор.Хранилище метафор улья должно быть запущено в удаленном режиме.

Самая обычная проблема заключается в том, что Sqoop не может связаться с правильным хранилищем метафор.Основными причинами этого, как правило, являются:

  1. Служба метастазирования улья это не работает.Он должен быть запущен в удаленном режиме и должна быть запущена отдельная служба.Вот быстрый способ проверить, работает ли он:

    сервисный улей-статус метахрана

  2. hive-site.xml не содержит hive.metastore.uris.Вот пример hive-site.xml с hive.metastore.uris установленный:

    <configuration>
    ...
      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://sqoop2.example.com:9083</value>
      </property>
    ...
    </configuration>
    
  3. hive-site.xml не включено в ваше действие Sqoop (или его свойства).Попробуйте добавить свой hive-site.xml в <file> элемент в вашем действии Sqoop.Вот пример workflow.xml с <file> в нем:

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

Другие советы

Это похоже на ошибку в sqoop.Я не уверен в Jira #.Hortonworks упомянул, что проблема все еще не решена даже в версии HDP 2.2.

@abeaamase - я хочу попробовать использовать ваше решение.

Просто хочу проверить, работает ли приведенные ниже решения для SQooP + Imipe Imipe в одном одиночном задании Oozie?

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

Если вы используете CDH, то проблема может быть связана с конфликтами зависимости от Jive MetaStore.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top