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
Dokončení nastavení testovacího prostředí v tématu Použití Apache Sqoopu s Hadoopem ve službě HDInsight.
Znalost Sqoopu. Další informace najdete v uživatelské příručce pro Sqoop.
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í
Spusťte Sadu Visual Studio a vytvořte konzolovou aplikaci jazyka C#.
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.
V souboru Program.cs použijte následující kód. Upravte kód tak, aby nastavil hodnoty pro
ExistingClusterName
, aExistingClusterPassword
.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); } } }
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.
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" };
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:
- Použití Apache Oozie se službou HDInsight: Použijte akci Sqoop v pracovním postupu Oozie.
- Nahrání dat do SLUŽBY HDInsight: Vyhledejte další metody pro nahrávání dat do služby HDInsight nebo do úložiště objektů blob v Azure.