Apache Sqoop gebruiken met Hadoop in HDInsight
Meer informatie over het gebruik van Apache Sqoop in HDInsight voor het importeren en exporteren van gegevens tussen een HDInsight-cluster en Azure SQL Database.
Hoewel Apache Hadoop een natuurlijke keuze is voor het verwerken van ongestructureerde en semi-gestructureerde gegevens, zoals logboeken en bestanden, is het ook mogelijk dat gestructureerde gegevens moeten worden verwerkt die zijn opgeslagen in relationele databases.
Apache Sqoop is een hulpprogramma dat is ontworpen om gegevens over te dragen tussen Hadoop-clusters en relationele databases. U kunt deze gebruiken om gegevens te importeren uit een relationeel databasebeheersysteem (RDBMS), zoals SQL Server, MySQL of Oracle, in het Hadoop Distributed File System (HDFS), de gegevens in Hadoop te transformeren met MapReduce of Apache Hive en de gegevens vervolgens terug te exporteren naar een RDBMS. In dit artikel gebruikt u Azure SQL Database voor uw relationele database.
Belangrijk
In dit artikel wordt een testomgeving ingesteld om de gegevensoverdracht uit te voeren. Vervolgens kiest u een methode voor gegevensoverdracht voor deze omgeving uit een van de methoden in de sectie Sqoop-taken uitvoeren.
Voor Sqoop-versies die worden ondersteund in HDInsight-clusters, raadpleegt u Wat is er nieuw in de clusterversies van HDInsight?
Inzicht in het scenario
HdInsight-cluster wordt geleverd met enkele voorbeeldgegevens. U gebruikt de volgende twee voorbeelden:
- Een Apache-logboekbestand
Log4j
, dat zich bevindt op/example/data/sample.log
. De volgende logboeken worden uit het bestand geëxtraheerd:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
Een Hive-tabel met de naam
hivesampletable
, die verwijst naar het gegevensbestand in/hive/warehouse/hivesampletable
. De tabel bevat enkele gegevens van mobiele apparaten.Veld Gegevenstype clientid tekenreeks querytime tekenreeks markt tekenreeks deviceplatform tekenreeks devicemake tekenreeks devicemodel tekenreeks staat tekenreeks land tekenreeks querydwelltime dubbel sessionid
bigint sessionpagevieworder bigint
In dit artikel gebruikt u deze twee gegevenssets om Sqoop-import en -export te testen.
Testomgeving instellen
Het cluster, de SQL-database en andere objecten worden gemaakt via Azure Portal met behulp van een Azure Resource Manager-sjabloon. De sjabloon vindt u in Azure QuickStart-sjablonen. De Resource Manager-sjabloon roept een bacpac-pakket aan om de tabelschema's te implementeren in een SQL-database. Als u een privécontainer wilt gebruiken voor de bacpac-bestanden, gebruikt u de volgende waarden in de sjabloon:
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
Notitie
Importeren met behulp van een sjabloon of Azure Portal biedt alleen ondersteuning voor het importeren van een BACPAC-bestand uit Azure Blob Storage.
Selecteer de volgende afbeelding om de Resource Manager-sjabloon te openen in Azure Portal.
Voer de volgende eigenschappen in:
Veld Waarde Abonnement Selecteer uw Azure-abonnement in de vervolgkeuzelijst. Resourcegroep Selecteer uw resourcegroep in de vervolgkeuzelijst of maak een nieuwe Locatie Selecteer een regio in de vervolgkeuzelijst. Clusternaam Voer een naam in voor het Hadoop-cluster. Gebruik alleen kleine letters. Gebruikersnaam voor clusteraanmelding Laat de vooraf ingevulde waarde admin
behouden.Wachtwoord voor aanmelden bij cluster Voer een wachtwoord in. Ssh-gebruikersnaam Laat de vooraf ingevulde waarde sshuser
behouden.Ssh-wachtwoord Voer een wachtwoord in. Sql Admin-aanmelding Laat de vooraf ingevulde waarde sqluser
behouden.Sql-beheerderswachtwoord Voer een wachtwoord in. _artifacts locatie Gebruik de standaardwaarde, tenzij u uw eigen bacpac-bestand op een andere locatie wilt gebruiken. Sas-token voor _artifacts locatie Leeg laten. Bacpac-bestandsnaam Gebruik de standaardwaarde, tenzij u uw eigen bacpac-bestand wilt gebruiken. Locatie Gebruik de standaardwaarde. De naam van de logische SQL-server is
<ClusterName>dbserver
. De databasenaam is<ClusterName>db
. De standaardnaam van het opslagaccount ise6qhezrh2pdqu
.Selecteer Ik ga akkoord met de bovenstaande voorwaarden.
Selecteer Aankoop. U ziet een nieuwe tegel met de titel Implementatie verzenden voor sjabloonimplementatie. Het duurt ongeveer 20 minuten om het cluster en de SQL-database te maken.
Sqoop-taken uitvoeren
HDInsight kan Sqoop-taken uitvoeren met behulp van verschillende methoden. Gebruik de volgende tabel om te bepalen welke methode geschikt is voor u en volg vervolgens de koppeling voor een overzicht.
Gebruik dit als u wilt... | ... een interactieve shell | ...batchverwerking | ... van dit clientbesturingssysteem |
---|---|---|---|
SSH | ? | ? | Linux, Unix, macOS X of Windows |
.NET-SDK voor Hadoop | ? | Windows (voorlopig) | |
Azure PowerShell | ? | Windows |
Beperkingen
- Bulkexport: met HDInsight op basis van Linux biedt de Sqoop-connector die wordt gebruikt voor het exporteren van gegevens naar Microsoft SQL Server of SQL Database momenteel geen ondersteuning voor bulkinvoegingen.
- Batching: met HDInsight op basis van Linux voert Sqoop bij het
-batch
uitvoeren van inserts meerdere invoegbewerkingen uit in plaats van de invoegbewerkingen in batches te plaatsen.
Volgende stappen
U hebt nu geleerd hoe u Sqoop gebruikt. Raadpleeg voor meer informatie:
- Apache Hive gebruiken met HDInsight
- Gegevens uploaden naar HDInsight: zoek andere methoden voor het uploaden van gegevens naar HDInsight/Azure Blob Storage.
- Apache Sqoop gebruiken voor het importeren en exporteren van gegevens tussen Apache Hadoop in HDInsight en SQL Database