استخدم 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.
المتطلبات الأساسية
اكتمال إعداد بيئة الاختبار من استخدام Apache Sqoop مع Hadoop في HDInsight.
عميل SSH. لمزيد من المعلومات، يرجى الرجوع إلى الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH .
الإلمام بـ Sqoop. لمزيد من المعلومات، راجع دليل مستخدم Sqoop.
الإعداد
استخدم الأمر ssh للاتصال بنظام المجموعة الخاص بك. قم بتحرير الأمر أدناه عن طريق استبدال اسم نظام المجموعة باسم نظام مجموعتك ثم إدخال الأمر:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
لسهولة الاستخدام، اضبط المتغيرات. استبدل
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.
للتحقق من أن Sqoop يمكنه رؤية قاعدة البيانات الخاصة بك، أدخل الأمر أدناه في اتصال SSH المفتوح الخاص بك. يقوم هذا الأمر بإرجاع قائمة قواعد البيانات.
sqoop list-databases --connect $SERVER_CONNECT
أدخل الأمر التالي لمشاهدة قائمة جداول قاعدة البيانات المحددة:
sqoop list-tables --connect $SERVER_DB_CONNECT
لتصدير البيانات من جدول Apache Hive
hivesampletable
إلى الجدولmobiledata
في قاعدة البيانات الخاصة بك، أدخل الأمر أدناه في اتصال SSH المفتوح الخاص بك:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
للتحقق من أنه تم تصدير البيانات، استخدم الاستعلامات التالية من اتصال 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.
أدخل الأمر أدناه في اتصال 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
بدلاً من ذلك، يمكنك أيضاً تحديد جدول 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
بمخزون اكتمال الاستيراد، أدخل الأمر التالي في اتصال SSH المفتوح الخاص بك لسرد البيانات في الدليل الجديد:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
استخدم beeline للتحقق من إنشاء الجدول في Apache Hive.
اتصال
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
نفِّذ كل استعلام أدناه واحداً تلو الآخر وراجع الناتج:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
الخروج من الخط المباشر مع
!exit
.
القيود
تصدير مجمّع - باستخدام HDInsight المستند إلى Linux، لا يدعم موصل Sqoop المستخدم لتصدير البيانات إلى SQL الإدخالات المجمعة.
التجميع - باستخدام HDInsight المستندة إلى Linux، عند استخدام مفتاح
-batch
عند إجراء الإدخالات، يقوم Sqoop بإدراج عدة إدخالات بدلاً من تجميع عمليات الإدراج.
اعتبارات هامة
يجب أن يكون كل من HDInsight وSQL Server على نفس شبكة Azure الظاهرية.
على سبيل المثال، راجع كيفية توصيل HDInsight بمستند الشبكة المحلية.
لمزيد من المعلومات حول استخدام HDInsight مع شبكة Azure الظاهرية، راجع كيفية توسيع HDInsight باستخدام مستند شبكة Azure الظاهرية . لمزيد من المعلومات حول Azure Virtual Network، راجع مستند نظرة عامة على الشبكة الظاهرية.
يجب تكوين SQL Server للسماح بمصادقة SQL. لمزيد من المعلومات، راجع مستند اختيار وضع المصادقة.
قد تضطر إلى تكوين SQL Server لقبول الاتصالات البعيدة.
الخطوات التالية
لقد تعلمت الآن كيفية استخدام Sqoop. لمعرفة المزيد، راجع:
- استخدم Apache Oozie مع HDInsight: استخدم إجراء Sqoop في سير عمل Oozie.
- تحليل بيانات تأخير الرحلة باستخدام HDInsight: استخدم الاستعلام التفاعلي لتحليل بيانات تأخير الرحلة، ثم استخدم Sqoop لتصدير البيانات إلى قاعدة بيانات في Azure.
- تحميل البيانات إلى HDInsight: البحث عن طرق أخرى لتحميل البيانات إلى تخزين HDInsight / Azure Blob.