سؤال

أواجه مشكلة أثناء تنفيذ إجراء oozie skoop.في السجلات أستطيع أن أرى أن سكووب قادر على استيراد البيانات إلى الدليل المؤقت ثم يقوم سكووب بإنشاء نصوص برمجية للخلية لاستيراد البيانات.

فشل أثناء استيراد البيانات المؤقتة إلى الخلية.

في السجلات لا أحصل على أي استثناء.

يوجد أدناه إجراء سكوب الذي أستخدمه.

<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 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 نجح في استيراد البيانات إلى HDFS وفشل في تحميل تلك البيانات إلى Hive.

إليكم بعض الخلفية عما يحدث..يطلق Oozie مهمة منفصلة (والتي سيتم تنفيذها على أي عقدة في مجموعة hadoop الخاصة بك) لتشغيل أمر Sqoop.يبدأ أمر Sqoop مهمة منفصلة لتحميل البيانات إلى HDFS.بعد ذلك، في نهاية مهمة Sqoop، يقوم skoop بتشغيل برنامج نصي للخلية لتحميل تلك البيانات إلى الخلية.

نظرًا لأن هذا يتم تشغيله نظريًا من أي عقدة في مجموعة Hadoop الخاصة بك، فيجب أن تكون واجهة سطر الأوامر للخلية متاحة على كل عقدة وتتحدث إلى نفس المتجر التعريفي.سيحتاج Hive Metastore إلى التشغيل في الوضع البعيد.

المشكلة الأكثر شيوعًا هي أن Sqoop لا يمكنه التحدث إلى metastore الصحيح.الأسباب الرئيسية لذلك هي عادة:

  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 الخاص بك.فيما يلي مثال لسير العمل.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.لست متأكدا من جيرا #.ذكرت Hortonworks أن القضية لا تزال غير حل حتى في إصدار HDP 2.2.

@ abeaamase - أريد محاولة استخدام الحل الخاص بك.

فقط أريد أن تحقق ما إذا كان أدناه الحل يعمل بشكل جيد بالنسبة لاستيراد SQOOP + خلية في وظيفة OOZIE واحدة؟

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

إذا كنت تستخدم CDH، فقد تكون المشكلة بسبب تعارضات الاعتماد المنتورة الخليفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top