Använda Apache Sqoop med Hadoop i HDInsight

Lär dig hur du använder Apache Sqoop i HDInsight för att importera och exportera data mellan ett HDInsight-kluster och Azure SQL Database.

Även om Apache Hadoop är ett naturligt val för bearbetning av ostrukturerade och halvstrukturerade data, till exempel loggar och filer, kan det också finnas ett behov av att bearbeta strukturerade data som lagras i relationsdatabaser.

Apache Sqoop är ett verktyg som är utformat för att överföra data mellan Hadoop-kluster och relationsdatabaser. Du kan använda den för att importera data från ett hanteringssystem för relationsdatabaser (RDBMS), till exempel SQL Server, MySQL eller Oracle till HDFS (Hadoop Distributed File System), transformera data i Hadoop med MapReduce eller Apache Hive och sedan exportera data tillbaka till en RDBMS. I den här artikeln använder du Azure SQL Database för relationsdatabasen.

Viktigt

Den här artikeln konfigurerar en testmiljö för att utföra dataöverföringen. Sedan väljer du en dataöverföringsmetod för den här miljön från någon av metoderna i avsnittet Kör Sqoop-jobb.

Information om Sqoop-versioner som stöds i HDInsight-kluster finns i Nyheter i klusterversionerna som tillhandahålls av HDInsight?

Förstå scenariot

HDInsight-kluster levereras med exempeldata. Du använder följande två exempel:

  • En Apache-loggfil Log4j som finns på /example/data/sample.log. Följande loggar extraheras från filen:
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
...
  • En Hive-tabell med namnet hivesampletable, som refererar till datafilen som finns på /hive/warehouse/hivesampletable. Tabellen innehåller vissa data för mobila enheter.

    Fält Datatyp
    clientid sträng
    querytime sträng
    Marknaden sträng
    deviceplatform sträng
    devicemake sträng
    devicemodel sträng
    state sträng
    land sträng
    querydwelltime double
    Sessionid bigint
    sessionpagevieworder bigint

I den här artikeln använder du dessa två datauppsättningar för att testa Sqoop-import och -export.

Konfigurera testmiljö

Klustret, SQL-databasen och andra objekt skapas via Azure Portal med hjälp av en Azure Resource Manager-mall. Mallen finns i Azure-snabbstartsmallar. Resource Manager-mallen anropar ett bacpac-paket för att distribuera tabellscheman till en SQL-databas. Om du vill använda en privat container för bacpac-filerna använder du följande värden i mallen:

"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",

Anteckning

Import med hjälp av en mall eller Azure Portal stöder endast import av en BACPAC-fil från Azure Blob Storage.

  1. Välj följande bild för att öppna mallen Resource Manager i Azure Portal.

    Knappen Distribuera till Azure för nytt kluster

  2. Ange följande egenskaper:

    Fält Värde
    Prenumeration Välj din Azure-prenumeration i listrutan.
    Resursgrupp Välj din resursgrupp i listrutan eller skapa en ny
    Location Välj en region i listrutan.
    Klusternamn Ange ett namn för Hadoop-klustret. Använd endast gemener.
    Användarnamn för klusterinloggning Behåll det förifyllda värdet admin.
    Lösenord för klusterinloggning Ange ett lösenord.
    Ssh-användarnamn Behåll det förifyllda värdet sshuser.
    SSH-lösenord Ange ett lösenord.
    Sql Admin-inloggning Behåll det förifyllda värdet sqluser.
    Sql Admin-lösenord Ange ett lösenord.
    _artifacts plats Använd standardvärdet om du inte vill använda din egen bacpac-fil på en annan plats.
    _artifacts Sas-token för plats Lämna tomt.
    Bacpac-filnamn Använd standardvärdet om du inte vill använda din egen bacpac-fil.
    Location Använd standardvärdet.

    Det logiska SQL-servernamnet är <ClusterName>dbserver. Databasnamnet är <ClusterName>db. Standardnamnet för lagringskontot är e6qhezrh2pdqu.

  3. Välj Jag godkänner de villkor som anges ovan.

  4. Välj Köp. Du ser en ny panel med titeln Submitting deployment for Template deployment (Skicka distribution för malldistribution). Det tar cirka 20 minuter att skapa klustret och SQL Database.

Köra Sqoop-jobb

HDInsight kan köra Sqoop-jobb med hjälp av olika metoder. Använd följande tabell för att bestämma vilken metod som passar dig bäst och följ sedan länken för en genomgång.

Använd det här om du vill... ... ett interaktivt gränssnitt ... batchbearbetning ... från det här klientoperativsystemet
SSH ? ? Linux, Unix, Mac OS X eller Windows
.NET SDK för Hadoop   ? Windows (för tillfället)
Azure PowerShell   ? Windows

Begränsningar

  • Massexport – Med Linux-baserad HDInsight stöder Sqoop-anslutningsappen som används för att exportera data till Microsoft SQL Server eller SQL Database för närvarande inte massinfogningar.
  • Batchbearbetning – Med Linux-baserad HDInsight utför Sqoop flera infogningar i stället för att batchhantera infogningsåtgärderna när du använder växeln -batch när du utför infogningar.

Nästa steg

Nu har du lärt dig hur du använder Sqoop. Mer information finns i: