Apache Sqoop gebruiken met Hadoop in HDInsight

Meer informatie over het gebruik van Apache Sqoop in HDInsight om gegevens te importeren en exporteren 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, kan het ook nodig zijn om gestructureerde gegevens te verwerken 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 het gebruiken om gegevens uit een relationeel databasebeheersysteem (RDBMS) zoals SQL Server, MySQL of Oracle te importeren 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.

Zie Wat is er nieuw in de clusterversies van HDInsight? voor Sqoop-versies die worden ondersteund in HDInsight-clusters.

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 op /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
    country tekenreeks
    querydwelltime double
    Sessionid bigint
    sessionpagevieworder bigint

In dit artikel gebruikt u deze twee gegevenssets om sqoop importeren en exporteren te testen.

Testomgeving instellen

Het cluster, de SQL-database en andere objecten worden gemaakt via de Azure Portal met behulp van een Azure Resource Manager-sjabloon. De sjabloon vindt u in Azure-snelstartsjablonen. De sjabloon Resource Manager 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 de Azure Portal ondersteunt alleen het importeren van een BACPAC-bestand uit Azure Blob Storage.

  1. Selecteer de volgende afbeelding om de sjabloon Resource Manager te openen in de 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 Behoud de vooraf ingevulde waarde admin.
    Wachtwoord voor clusteraanmelding Voer een wachtwoord in.
    Ssh-gebruikersnaam Behoud de vooraf ingevulde waarde sshuser.
    Ssh-wachtwoord Voer een wachtwoord in.
    Aanmelding bij SQL Beheer Behoud de vooraf ingevulde waarde sqluser.
    Sql Beheer-wachtwoord 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. Volg vervolgens de koppeling voor een overzicht.

Gebruik dit als u wilt... ... een interactieve shell ... batchverwerking ... van dit clientbesturingssysteem
SSH ? ? Linux, Unix, Mac OS 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.
  • Batchverwerking: met HDInsight op basis van Linux voert Sqoop meerdere invoegbewerkingen uit wanneer u de -batch schakeloptie gebruikt bij het uitvoeren van invoegbewerkingen.

Volgende stappen

U hebt nu geleerd hoe u Sqoop gebruikt. Raadpleeg voor meer informatie: