Sdílet prostřednictvím


Spouštění úloh Apache Sqoop pomocí sady .NET SDK pro Apache Hadoop ve službě HDInsight

Zjistěte, jak pomocí sady Azure HDInsight .NET SDK spouštět úlohy Apache Sqoop ve službě HDInsight k importu a exportu mezi clusterem HDInsight a databází Azure SQL nebo databází SQL Server.

Požadavky

Použití Sqoopu v clusterech HDInsight se sadou .NET SDK

Sada HDInsight .NET SDK poskytuje klientské knihovny .NET, aby bylo snazší pracovat s clustery HDInsight z .NET. V této části vytvoříte konzolovou aplikaci jazyka C# pro export hivesampletable do tabulky Azure SQL Database, kterou jste vytvořili podle požadavků.

Nastavení

  1. Spusťte Sadu Visual Studio a vytvořte konzolovou aplikaci jazyka C#.

  2. Přejděte dokonzoly Správce balíčků>NuGetNástroje> a spusťte následující příkaz:

    Install-Package Microsoft.Azure.Management.HDInsight.Job
    

Export Sqoopu

Z Hive do SQL Server. Tento příklad exportuje data z tabulky Hive hivesampletable do mobiledata tabulky v SQL Database.

  1. V souboru Program.cs použijte následující kód. Upravte kód tak, aby nastavil hodnoty pro ExistingClusterName, a 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);
            }
        }
    }
    
  2. Pokud chcete program spustit, vyberte klávesu F5 .

Import Sqoop

Z SQL Server do Azure Storage. Tento příklad závisí na výše uvedeném exportu. Tento příklad importuje data z mobiledata tabulky v SQL Database do wasb:///tutorials/usesqoop/importeddata adresáře ve výchozím účtu úložiště clusteru.

  1. Výše uvedený kód v //sqoop start //sqoop end bloku nahraďte následujícím kódem:

    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. Pokud chcete program spustit, vyberte klávesu F5 .

Omezení

HdInsight založený na Linuxu má následující omezení:

  • Hromadný export: Konektor Sqoop, který se používá k exportu dat do služby Microsoft SQL Server nebo Azure SQL Database, v současné době nepodporuje hromadné vložení.

  • Dávkování: Pomocí -batch přepínače provádí Sqoop více vložení místo dávkování operací vložení.

Další kroky

Teď jste se naučili používat Sqoop. Další informace najdete v následujících tématech: