Uruchamianie zadań platformy Apache Sqoop przy użyciu zestawu .NET SDK dla platformy Apache Hadoop w usłudze HDInsight
Dowiedz się, jak używać zestawu .NET SDK usługi Azure HDInsight do uruchamiania zadań platformy Apache Sqoop w usłudze HDInsight w celu importowania i eksportowania między klastrem usługi HDInsight a bazą danych Azure SQL lub bazą danych SQL Server.
Wymagania wstępne
Ukończenie konfigurowania środowiska testowego z usługi Apache Sqoop z usługą Hadoop w usłudze HDInsight.
Znajomość narzędzia Sqoop. Aby uzyskać więcej informacji, zobacz Sqoop User Guide (Przewodnik użytkownika sqoop).
Używanie narzędzia Sqoop w klastrach usługi HDInsight z zestawem SDK platformy .NET
Zestaw SDK platformy .NET usługi HDInsight udostępnia biblioteki klienckie platformy .NET, dzięki czemu łatwiej jest pracować z klastrami usługi HDInsight z platformy .NET. W tej sekcji utworzysz aplikację konsolową języka C#, aby wyeksportować hivesampletable
tabelę Azure SQL Database utworzoną na podstawie wymagań wstępnych.
Konfiguruj
Uruchom program Visual Studio i utwórz aplikację konsolową języka C#.
Przejdź do pozycji Narzędzia>Konsola menedżera pakietówNuGet Package Manager> i uruchom następujące polecenie:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Eksportowanie sqoop
Z programu Hive do SQL Server. W tym przykładzie dane z tabeli Hive hivesampletable
są eksportowane do mobiledata
tabeli w SQL Database.
Użyj następującego kodu w pliku Program.cs. Edytuj kod, aby ustawić wartości dla
ExistingClusterName
, iExistingClusterPassword
.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); } } }
Aby uruchomić program, wybierz klucz F5 .
Importowanie sqoop
Z SQL Server do usługi Azure Storage. Ten przykład jest zależny od powyższego eksportu, który został wykonany. W tym przykładzie mobiledata
importuje dane z tabeli w SQL Database do wasb:///tutorials/usesqoop/importeddata
katalogu na domyślnym koncie magazynu klastra.
Zastąp powyższy kod w
//sqoop start //sqoop end
bloku następującym kodem: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" };
Aby uruchomić program, wybierz klucz F5 .
Ograniczenia
Usługa HDInsight oparta na systemie Linux przedstawia następujące ograniczenia:
Eksport zbiorczy: łącznik Sqoop używany do eksportowania danych do usługi Microsoft SQL Server lub Azure SQL Database nie obsługuje obecnie wstawiania zbiorczego.
Przetwarzanie wsadowe: przy użyciu przełącznika
-batch
Sqoop wykonuje wiele wstawiania zamiast wsadowania operacji wstawiania.
Następne kroki
Teraz wiesz już, jak używać narzędzia Sqoop. Aby dowiedzieć się więcej, zobacz:
- Korzystanie z usługi Apache Oozie z usługą HDInsight: użyj akcji Sqoop w przepływie pracy Oozie.
- Przekazywanie danych do usługi HDInsight: znajdź inne metody przekazywania danych do usługi HDInsight lub usługi Azure Blob Storage.