Apache Sqoop-feladatok futtatása az Apache Hadoophoz készült .NET SDK használatával a HDInsightban
Megtudhatja, hogyan használhatja az Azure HDInsight .NET SDK-t Apache Sqoop-feladatok HDInsightban való futtatására HDInsight-fürt és Azure SQL adatbázis vagy SQL Server adatbázis közötti importáláshoz és exportáláshoz.
Előfeltételek
A tesztelési környezet beállítása az Apache Sqoop és a Hadoop használatával a HDInsightban befejeződött.
A Sqoop ismerete. További információ: Sqoop felhasználói útmutató.
A Sqoop használata HDInsight-fürtökön a .NET SDK-val
A HDInsight .NET SDK .NET-ügyfélkódtárakat biztosít, így könnyebb a .NET-ből származó HDInsight-fürtökkel dolgozni. Ebben a szakaszban egy C#-konzolalkalmazást hoz létre, amely exportálja a hivesampletable
Azure SQL Adatbázis táblába, amelyet az előfeltételek alapján hozott létre.
Beállítás
Indítsa el a Visual Studiót, és hozzon létre egy C#-konzolalkalmazást.
Lépjen az Eszközök>NuGet-csomagkezelő csomagkezelő>konzoljára , és futtassa a következő parancsot:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Sqoop-exportálás
Hive-tól SQL Server. Ez a példa adatokat exportál a Hive hivesampletable
táblából a mobiledata
SQL Database táblába.
Használja az alábbi kódot a Program.cs fájlban. Szerkessze a kódot a és
ExistingClusterPassword
értékének beállításáhozExistingClusterName
.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); } } }
A program futtatásához válassza az F5 billentyűt.
Sqoop-importálás
A SQL Server az Azure Storage-ba. Ez a példa a fenti exportálás végrehajtásától függ. Ez a példa a mobiledata
SQL Database táblájából importál adatokat a wasb:///tutorials/usesqoop/importeddata
fürt alapértelmezett tárfiókjának könyvtárába.
Cserélje le a fenti kódot a
//sqoop start //sqoop end
blokkban a következő kódra: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" };
A program futtatásához válassza az F5 billentyűt.
Korlátozások
A Linux-alapú HDInsight a következő korlátozásokat mutatja be:
Tömeges exportálás: Az adatok Microsoft SQL Server vagy Azure SQL database-be való exportálásához használt Sqoop-összekötő jelenleg nem támogatja a tömeges beszúrásokat.
Kötegelés: A kapcsoló használatával a
-batch
Sqoop több beszúrást hajt végre a beszúrási műveletek kötegelése helyett.
Következő lépések
Most már megtanulta, hogyan használhatja a Sqoopot. További információ:
- Az Apache Oozie használata a HDInsighttal: Sqoop-művelet használata Oozie-munkafolyamatokban.
- Adatok feltöltése a HDInsightba: További módszerek keresése adatok HDInsightba vagy Azure Blob Storage-ba való feltöltéséhez.