Delen via


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.

  1. Selecteer de volgende afbeelding om de Resource Manager-sjabloon te openen in Azure Portal.

    De knop Implementeren in Azure voor een nieuw cluster

  2. 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 adminbehouden.
    Wachtwoord voor aanmelden bij cluster Voer een wachtwoord in.
    Ssh-gebruikersnaam Laat de vooraf ingevulde waarde sshuserbehouden.
    Ssh-wachtwoord Voer een wachtwoord in.
    Sql Admin-aanmelding Laat de vooraf ingevulde waarde sqluserbehouden.
    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 is e6qhezrh2pdqu.

  3. Selecteer Ik ga akkoord met de bovenstaande voorwaarden.

  4. 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: