Aracılığıyla paylaş


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

.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

  1. Visual Studio'yu başlatın ve bir C# konsol uygulaması oluşturun.

  2. 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.

  1. Program.cs dosyasında aşağıdaki kodu kullanın. ve değerlerini ayarlamak için ExistingClusterNameExistingClusterPasswordkodu 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);
            }
        }
    }
    
  2. 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.

  1. 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"
    };
    
  2. 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: