HDInsight'ta Apache Hadoop için .NET SDK'sını kullanarak Apache Sqoop işlerini çalıştırma
HdInsight kümesi ile Azure SQL Veritabanı veya SQL Server veritabanı arasında içeri ve dışarı aktarmak üzere HDInsight'ta Apache Sqoop işlerini çalıştırmak için Azure HDInsight .NET SDK'sını kullanmayı öğrenin.
Önkoşullar
HDInsight'ta Hadoop ile Apache Sqoop kullanmabölümünden Test ortamı ayarlama işlemi tamamlandı.
Sqoop hakkında bilgi. Daha fazla bilgi için bkz . Sqoop Kullanıcı Kılavuzu.
.NET SDK ile HDInsight kümelerinde Sqoop kullanma
HDInsight .NET SDK'sı .NET istemci kitaplıkları sağlar, böylece .NET'ten HDInsight kümeleriyle çalışmak daha kolay olur. Bu bölümde, önkoşullardan oluşturduğunuz Azure SQL Veritabanı tablosuna aktarmak hivesampletable
için bir C# konsol uygulaması oluşturacaksınız.
Kurulum
Visual Studio'yu başlatın ve bir C# konsol uygulaması oluşturun.
Araçlar>NuGet Paket Yöneticisi Paket Yöneticisi>Konsolu'na gidin ve aşağıdaki komutu çalıştırın:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Sqoop dışarı aktarma
Hive'dan SQL Server. Bu örnek, Hive hivesampletable
tablosundaki verileri SQL Veritabanı'daki tabloya mobiledata
aktarır.
Program.cs dosyasında aşağıdaki kodu kullanın. ve değerlerini ayarlamak için
ExistingClusterName
ExistingClusterPassword
kodu düzenleyin.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); } } }
Programı çalıştırmak için F5 tuşunu seçin.
Sqoop içeri aktarma
SQL Server'den Azure Depolama'ya. Bu örnek, gerçekleştirilen yukarıdaki dışarı aktarma işlemine bağlıdır. Bu örnek, SQL Veritabanı tablosundaki mobiledata
verileri kümenin wasb:///tutorials/usesqoop/importeddata
varsayılan Depolama Hesabındaki dizine aktarır.
Bloğundaki yukarıdaki
//sqoop start //sqoop end
kodu aşağıdaki kodla değiştirin: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" };
Programı çalıştırmak için F5 tuşunu seçin.
Sınırlamalar
Linux tabanlı HDInsight aşağıdaki sınırlamaları sunar:
Toplu dışarı aktarma: Verileri Microsoft SQL Server veya Azure SQL Veritabanı'na aktarmak için kullanılan Sqoop bağlayıcısı şu anda toplu eklemeleri desteklememektedir.
Toplu işlem: Sqoop, anahtarı kullanarak
-batch
ekleme işlemlerini toplu olarak gerçekleştirmek yerine birden çok ekleme gerçekleştirir.
Sonraki adımlar
Artık Sqoop'un nasıl kullanılacağını öğrendin. Daha fazla bilgi edinmek için şu makalelere bakın:
- HDInsight ile Apache Oozie kullanma: Oozie iş akışında Sqoop eylemini kullanın.
- VERILERI HDInsight'a yükleme: VERILERI HDInsight'a veya Azure Blob depolamaya yüklemek için başka yöntemler bulun.