استخدم Apache Sqoop لاستيراد البيانات وتصديرها بين Apache Hadoop على HDInsight وقاعدة بيانات Azure SQL

تعرف على كيفية استخدام Apache Sqoop للاستيراد والتصدير بين مجموعة Apache Hadoop في Azure HDInsight وقاعدة بيانات Azure SQL أو Microsoft SQL Server. تستخدم الخطوات الواردة في هذا المستند الأمر sqoop مباشرةً من العُقدة الرئيسية لمجموعة Hadoop. يمكنك استخدام SSH للاتصال بالعُقدة الرئيسية، وتشغيل الأوامر الواردة في هذا المستند. هذه المقالة هي استمرار لـ استخدام Apache Sqoop مع Hadoop في HDInsight.

المتطلبات الأساسية

الإعداد

  1. استخدم الأمر ssh للاتصال بنظام المجموعة الخاص بك. قم بتحرير الأمر أدناه عن طريق استبدال اسم نظام المجموعة باسم نظام مجموعتك ثم إدخال الأمر:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. لسهولة الاستخدام، اضبط المتغيرات. استبدل PASSWORD، وMYSQLSERVER، وMYDATABASE بالقيم الخاصة بها، ثم أدخل الأوامر التالية:

    export PASSWORD='PASSWORD'
    export SQL_SERVER="MYSQLSERVER"
    export DATABASE="MYDATABASE"
    
    
    export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD"
    export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DABATASE"
    

تصدير Sqoop

من Apache Hive إلى SQL.

  1. للتحقق من أن Sqoop يمكنه رؤية قاعدة البيانات الخاصة بك، أدخل الأمر أدناه في اتصال SSH المفتوح الخاص بك. يقوم هذا الأمر بإرجاع قائمة قواعد البيانات.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. أدخل الأمر التالي لمشاهدة قائمة جداول قاعدة البيانات المحددة:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. لتصدير البيانات من جدول Apache Hive hivesampletable إلى الجدول mobiledata في قاعدة البيانات الخاصة بك، أدخل الأمر أدناه في اتصال SSH المفتوح الخاص بك:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. للتحقق من أنه تم تصدير البيانات، استخدم الاستعلامات التالية من اتصال SSH الخاص بك لعرض البيانات التي تم تصديرها:

    sqoop eval --connect $SERVER_DB_CONNECT \
    --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)"
    
    
    sqoop eval --connect $SERVER_DB_CONNECT \
    --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
    

استيراد Sqoop

من تخزين SQL إلى Azure.

  1. أدخل الأمر أدناه في اتصال SSH المفتوح لاستيراد البيانات من جدول mobiledata في SQL إلى wasbs:///tutorials/usesqoop/importeddata على HDInsight. يتم فصل الحقول الموجودة في البيانات بحرف جدولة، ويتم إنهاء الأسطر بحرف سطر جديد.

    sqoop import --connect $SERVER_DB_CONNECT \
    --table mobiledata \
    --target-dir 'wasb:///tutorials/usesqoop/importeddata' \
    --fields-terminated-by '\t' \
    --lines-terminated-by '\n' -m 1
    
  2. بدلاً من ذلك، يمكنك أيضاً تحديد جدول Hive:

    sqoop import --connect $SERVER_DB_CONNECT \
    --table mobiledata \
    --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \
    --fields-terminated-by '\t' \
    --lines-terminated-by '\n' \
    --create-hive-table \
    --hive-table mobiledata_imported2 \
    --hive-import -m 1
    
  3. بمخزون اكتمال الاستيراد، أدخل الأمر التالي في اتصال SSH المفتوح الخاص بك لسرد البيانات في الدليل الجديد:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. استخدم beeline للتحقق من إنشاء الجدول في Apache Hive.

    1. اتصال

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. نفِّذ كل استعلام أدناه واحداً تلو الآخر وراجع الناتج:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. الخروج من الخط المباشر مع !exit.

القيود

  • تصدير مجمّع - باستخدام HDInsight المستند إلى Linux، لا يدعم موصل Sqoop المستخدم لتصدير البيانات إلى SQL الإدخالات المجمعة.

  • التجميع - باستخدام HDInsight المستندة إلى Linux، عند استخدام مفتاح -batch عند إجراء الإدخالات، يقوم Sqoop بإدراج عدة إدخالات بدلاً من تجميع عمليات الإدراج.

اعتبارات هامة

الخطوات التالية

لقد تعلمت الآن كيفية استخدام Sqoop. لمعرفة المزيد، راجع: