Apache Sqoop-taken uitvoeren met behulp van .NET SDK voor Apache Hadoop in HDInsight
Meer informatie over het gebruik van de Azure HDInsight .NET SDK voor het uitvoeren van Apache Sqoop-taken in HDInsight om te importeren en exporteren tussen een HDInsight-cluster en een Azure SQL Database of SQL Server database.
Vereisten
Voltooiing van de testomgeving instellen vanuit Apache Sqoop gebruiken met Hadoop in HDInsight.
Bekendheid met Sqoop. Zie Gebruikershandleiding voor Sqoop voor meer informatie.
Sqoop gebruiken in HDInsight-clusters met de .NET SDK
De HDInsight .NET SDK biedt .NET-clientbibliotheken, zodat u gemakkelijker kunt werken met HDInsight-clusters vanuit .NET. In deze sectie maakt u een C#-consoletoepassing om de hivesampletable
te exporteren naar de Azure SQL Database-tabel die u hebt gemaakt op basis van de vereisten.
Instellen
Start Visual Studio en maak een C#-consoletoepassing.
Navigeer naar Tools>NuGet Package Manager>Package Manager Console en voer de volgende opdracht uit:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Sqoop exporteren
Van Hive tot SQL Server. In dit voorbeeld worden gegevens uit de Hive-tabel hivesampletable
geƫxporteerd naar de mobiledata
tabel in SQL Database.
Gebruik de volgende code in het bestand Program.cs. Bewerk de code om de waarden voor
ExistingClusterName
, enExistingClusterPassword
in te stellen.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); } } }
Als u het programma wilt uitvoeren, selecteert u de toets F5 .
Sqoop importeren
Van SQL Server naar Azure Storage. Dit voorbeeld is afhankelijk van de bovenstaande export die is uitgevoerd. In dit voorbeeld worden gegevens uit de mobiledata
tabel in SQL Database geĆÆmporteerd naar de wasb:///tutorials/usesqoop/importeddata
map in het standaardopslagaccount van het cluster.
Vervang de bovenstaande code in het
//sqoop start //sqoop end
blok door de volgende code: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" };
Als u het programma wilt uitvoeren, selecteert u de toets F5 .
Beperkingen
HdInsight op basis van Linux heeft de volgende beperkingen:
Bulksgewijs exporteren: de Sqoop-connector die wordt gebruikt voor het exporteren van gegevens naar Microsoft SQL Server of Azure SQL Database biedt momenteel geen ondersteuning voor bulkinvoegingen.
Batchverwerking: Met behulp van de
-batch
schakeloptie voert Sqoop meerdere invoegbewerkingen uit in plaats van batchverwerkingen uit te voeren.
Volgende stappen
U hebt nu geleerd hoe u Sqoop gebruikt. Raadpleeg voor meer informatie:
- Apache Oozie gebruiken met HDInsight: Sqoop-actie gebruiken in een Oozie-werkstroom.
- Gegevens uploaden naar HDInsight: zoek andere methoden voor het uploaden van gegevens naar HDInsight of Azure Blob Storage.