تشغيل مهام Apache Sqoop باستخدام .NET SDK لـ Apache Hadoop في HDInsight
تعرف على كيفية استخدام Azure HDInsight .NET SDK لتشغيل وظائف Apache Sqoop في HDInsight لاستيراد البيانات وتصديرها بين مجموعة HDInsight وقاعدة بيانات Azure SQL أو خادم SQL.
المتطلبات الأساسية
اكتمال إعداد بيئة الاختبار من استخدام Apache Sqoop مع Hadoop في HDInsight.
الإلمام بـ Sqoop. لمزيد من المعلومات، راجع دليل مستخدم Sqoop.
استخدام Sqoop على مجموعات HDInsight مع .NET SDK
يوفر HDInsight .NET SDK مكتبات عملاء NET.، مما يسهل العمل مع مجموعات HDInsight من .NET. في هذا القسم، يمكنك إنشاء تطبيق وحدة تحكم C# لتصدير hivesampletable
إلى جدول قاعدة بيانات Azure SQL التي قمت بإنشائها من المتطلبات الأساسية.
الإعداد
ابدأ تشغيل Visual Studio وأنشئ تطبيق وحدة تحكم #C.
انتقل إلى Tools>NuGet Package Manager>Package Manager Console وأدخل الأمر التالي:
Install-Package Microsoft.Azure.Management.HDInsight.Job
تصدير Sqoop
من Hive إلى خادم SQL. يقوم هذا المثال بتصدير البيانات من جدول Hive hivesampletable
إلى جدول mobiledata
في قاعدة بيانات SQL.
استخدم التعليمات البرمجية التالية في الملف Program.cs. قم بتحرير التعليمات البرمجية لتعيين القيم لـ
ExistingClusterName
، وExistingClusterPassword
.using Microsoft.Azure.Management.HDInsight.Job; using Microsoft.Azure.Management.HDInsight.Job.Models; using Hyak.Common; namespace SubmitHDInsightJobDotNet { class Program { private static HDInsightJobManagementClient _hdiJobManagementClient; private const string ExistingClusterName = "<Your HDInsight Cluster Name>"; private const string ExistingClusterPassword = "<Cluster User Password>"; private const string ExistingClusterUri = ExistingClusterName + ".azurehdinsight.net"; private const string ExistingClusterUsername = "admin"; static void Main(string[] args) { System.Console.WriteLine("The application is running ..."); var clusterCredentials = new BasicAuthenticationCloudCredentials { Username = ExistingClusterUsername, Password = ExistingClusterPassword }; _hdiJobManagementClient = new HDInsightJobManagementClient(ExistingClusterUri, clusterCredentials); SubmitSqoopJob(); System.Console.WriteLine("Press ENTER to continue ..."); System.Console.ReadLine(); } private static void SubmitSqoopJob() { var sqlDatabaseServerName = ExistingClusterName + "dbserver"; var sqlDatabaseLogin = "sqluser"; var sqlDatabaseLoginPassword = ExistingClusterPassword; var sqlDatabaseDatabaseName = ExistingClusterName + "db"; // Connection string for using Azure SQL Database; Comment if using SQL Server var connectionString = "jdbc:sqlserver://" + sqlDatabaseServerName + ".database.windows.net;user=" + sqlDatabaseLogin + "@" + sqlDatabaseServerName + ";password=" + sqlDatabaseLoginPassword + ";database=" + sqlDatabaseDatabaseName; // Connection string for using SQL Server; Uncomment if using SQL Server // var connectionString = "jdbc:sqlserver://" + sqlDatabaseServerName + ";user=" + sqlDatabaseLogin + ";password=" + sqlDatabaseLoginPassword + ";database=" + sqlDatabaseDatabaseName; //sqoop start var tableName = "mobiledata"; var parameters = new SqoopJobSubmissionParameters { Command = "export --connect " + connectionString + " --table " + tableName + " --hcatalog-table hivesampletable" }; //sqoop end System.Console.WriteLine("Submitting the Sqoop job to the cluster..."); var response = _hdiJobManagementClient.JobManagement.SubmitSqoopJob(parameters); System.Console.WriteLine("Validating that the response is as expected..."); System.Console.WriteLine("Response status code is " + response.StatusCode); System.Console.WriteLine("Validating the response object..."); System.Console.WriteLine("JobId is " + response.JobSubmissionJsonResponse.Id); } } }
لتشغيل البرنامج، حدد المفتاح F5.
استيراد Sqoop
من خادم SQL إلى تخزين Azure. يعتمد هذا المثال على التصدير أعلاه بعد أن تم تنفيذه. يقوم هذا المثال باستيراد البيانات من الجدول mobiledata
في قاعدة بيانات SQL إلى الدليل wasb:///tutorials/usesqoop/importeddata
على حساب التخزين الافتراضي للمجموعة.
استبدل التعليمات البرمجية أعلاه في كتلة
//sqoop start //sqoop end
بالتعليمات البرمجية التالية:var tableName = "mobiledata"; var exportDir = "/tutorials/usesqoop/importeddata"; var parameters = new SqoopJobSubmissionParameters { Command = "import --connect " + connectionString + " --table " + tableName + " --target-dir " + exportDir + " --fields-terminated-by \\t --lines-terminated-by \\n -m 1" };
لتشغيل البرنامج، حدد المفتاح F5.
التقييدات
يقدم HDInsight القائم على Linux القيود التالية:
تصدير كمية كبيرة: موصل Sqoop المستخدم لتصدير البيانات إلى Microsoft SQL Server أو قاعدة بيانات SQL لا يدعم حاليًا إدراج كميات كبيرة.
إرسال في دفعات: باستخدام المفتاح
-batch
، يقوم Sqoop بإدراجات متعددة بدلاً من الإرسال في دفعات.
الخطوات التالية
لقد تعلمت الآن كيفية استخدام Sqoop. لمعرفة المزيد، راجع:
- استخدم Apache Oozie مع HDInsight: استخدام إجراء Sqoop في سير عمل Oozie.
- تحميل البيانات إلى HDInsight: البحث عن طرق أخرى لتحميل البيانات إلى HDInsight أو مخزن الكائنات الثنائية كبيرة الحجم لـ Azure.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ