Menjalankan pekerjaan Apache Sqoop menggunakan .NET SDK untuk Apache Hadoop di HDInsight
Pelajari cara menggunakan Azure HDInsight .NET SDK untuk menjalankan pekerjaan Apache Sqoop di HDInsight untuk mengimpor dan mengekspor antara kluster HDInsight dan database Azure SQL Database atau SQL Server.
Prasyarat
Penyelesaian Penyiapan lingkungan pengujian dari Menggunakan Apache Sqoop dengan Hadoop dalam HDInsight.
Keakraban dengan Sqoop. Untuk informasi selengkapnya, lihat Panduan Pengguna Sqoop.
Menggunakan Sqoop pada kluster HDInsight dengan .NET SDK
HDInsight .NET SDK menyediakan pustaka klien .NET, sehingga lebih mudah untuk bekerja dengan kluster HDInsight dari .NET. Di bagian ini, Anda membuat aplikasi konsol C# untuk mengekspor hivesampletable
ke tabel Azure SQL Database yang Anda buat dari prasyarat.
Menyiapkan
Mulai Visual Studio dan buat aplikasi konsol C#.
Navigasikan ke Alat>NuGet Package Manager>Package Manager Console dan jalankan perintah berikut:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Ekspor Sqoop
Dari Apache Hive ke SQL Server. Contoh ini mengekspor data dari tabel Apache Hive hivesampletable
ke tabel mobiledata
dalam SQL Database.
Gunakan kode berikut dalam file Program.cs. Edit kode untuk mengatur nilai
ExistingClusterName
, danExistingClusterPassword
.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); } } }
Untuk menjalankan program, pilih tombol F5.
Impor Sqoop
Dari SQL Server ke Azure Storage. Contoh ini bergantung pada ekspor di atas yang telah dilakukan. Contoh ini mengimpor data dari tabel mobiledata
di SQL Database ke direktori wasb:///tutorials/usesqoop/importeddata
pada Akun Storage default kluster.
Ganti kode di atas pada blok
//sqoop start //sqoop end
dengan kode berikut: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" };
Untuk menjalankan program, pilih tombol F5.
Batasan
HDInsight berbasis Linux menyajikan batasan berikut:
Ekspor massal: Konektor Sqoop yang digunakan untuk mengekspor data ke Microsoft SQL Server atau Azure SQL Database saat ini tidak mendukung penyisipan massal.
Batching: Menggunakan sakelar
-batch
, Sqoop melakukan banyak penyisipan alih-alih menumpuk operasi penyisipan.
Langkah berikutnya
Sekarang Anda telah mempelajari cara menggunakan Sqoop. Untuk mempelajari selengkapnya, lihat:
- Menggunakan Apache Oozie dengan HDInsight: Gunakan tindakan Sqoop dalam alur kerja Oozie.
- Mengunggah data ke HDInsight: Temukan metode lain untuk mengunggah data ke penyimpanan HDInsight atau Azure Blob.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk