Köra Apache Sqoop-jobb med hjälp av .NET SDK för Apache Hadoop i HDInsight
Lär dig hur du använder Azure HDInsight .NET SDK för att köra Apache Sqoop-jobb i HDInsight för att importera och exportera mellan ett HDInsight-kluster och en Azure SQL Database eller SQL Server databas.
Förutsättningar
Slutförande av Konfiguration av testmiljö från Använd Apache Sqoop med Hadoop i HDInsight.
Kunskaper om Sqoop. Mer information finns i Användarhandbok för Sqoop.
Använda Sqoop i HDInsight-kluster med .NET SDK
HDInsight .NET SDK tillhandahåller .NET-klientbibliotek, så att det blir enklare att arbeta med HDInsight-kluster från .NET. I det här avsnittet skapar du ett C#-konsolprogram för att exportera hivesampletable
till tabellen Azure SQL Database som du skapade från förhandskraven.
Konfigurera
Starta Visual Studio och skapa ett C#-konsolprogram.
Gå till Verktyg>NuGet Package Manager PackageManager-konsolen> och kör följande kommando:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Sqoop-export
Från Hive till SQL Server. Det här exemplet exporterar data från Hive-tabellen hivesampletable
till mobiledata
tabellen i SQL Database.
Använd följande kod i filen Program.cs. Redigera koden för att ange värdena för
ExistingClusterName
, ochExistingClusterPassword
.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); } } }
Om du vill köra programmet väljer du F5-nyckeln .
Sqoop-import
Från SQL Server till Azure Storage. Det här exemplet är beroende av att exporten ovan har utförts. Det här exemplet importerar data från mobiledata
tabellen i SQL Database till wasb:///tutorials/usesqoop/importeddata
katalogen på klustrets standardlagringskonto.
Ersätt koden ovan i
//sqoop start //sqoop end
blocket med följande kod: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" };
Om du vill köra programmet väljer du F5-nyckeln .
Begränsningar
Linux-baserade HDInsight presenterar följande begränsningar:
Massexport: Sqoop-anslutningsappen som används för att exportera data till Microsoft SQL Server eller Azure SQL Database stöder för närvarande inte massinfogningar.
Batchbearbetning: Genom att använda växeln
-batch
utför Sqoop flera infogningar i stället för att batchinfoga infogningsåtgärderna.
Nästa steg
Nu har du lärt dig hur du använder Sqoop. Mer information finns i:
- Använd Apache Oozie med HDInsight: Använd Sqoop-åtgärd i ett Oozie-arbetsflöde.
- Ladda upp data till HDInsight: Hitta andra metoder för att ladda upp data till HDInsight eller Azure Blob Storage.