Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak używać zestawu SDK platformy .NET 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 Database lub SQL Server.
Wymagania wstępne
Zakończenie skonfigurowania środowiska testowego z przewodnika "Użycie Apache Sqoop z Hadoop w HDInsight".
Znajomość narzędzia Sqoop. Aby uzyskać więcej informacji, zobacz Sqoop User Guide (Podręcznik użytkownika sqoop).
Używanie narzędzia Sqoop w klastrach usługi HDInsight z zestawem SDK platformy .NET
Zestaw .NET SDK 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
element do tabeli usługi Azure SQL Database utworzonej na podstawie wymagań wstępnych.
Ustawienia
Uruchom program Visual Studio i utwórz aplikację konsolową języka C#.
Przejdź do Narzędzia>Menedżer pakietów NuGet>Konsola menedżera pakietów i uruchom następujące polecenie:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Eksport Sqoop
Z programu Hive do programu SQL Server. W tym przykładzie dane z tabeli Hive są eksportowane do mobiledata
tabeli w usłudze hivesampletable
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 F5 .
Importowanie Sqoop
Z programu 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 importowane są dane z tabeli mobiledata
SQL Database do katalogu wasb:///tutorials/usesqoop/importeddata
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 F5 .
Ograniczenia
Usługa HDInsight oparta na systemie Linux przedstawia następujące ograniczenia:
Eksport zbiorczy: łącznik Sqoop używany do eksportowania danych do programu Microsoft SQL Server lub usługi Azure SQL Database nie obsługuje obecnie operacji wstawiania zbiorczego.
Przetwarzanie wsadowe: przy użyciu przełącznika
-batch
Sqoop wykonuje wiele operacji wstawiania zamiast dzielenia na partie operacji wstawiania.
Następne kroki
Teraz wiesz już, jak używać narzędzia Sqoop. Aby dowiedzieć się więcej, zobacz:
- Użyj Apache Oozie z HDInsight: Użyj działania Sqoop w przepływie pracy Oozie.
- Przekazywanie danych do usługi HDInsight: znajdź inne metody przekazywania danych do usługi HDInsight lub Azure Blob Storage.