Dela via


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 det hadoop-distribuerade filsystemet (HDFS), transformera data i Hadoop med MapReduce eller Apache Hive och sedan exportera tillbaka data 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-klustret levereras med några 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 mobila enhetsdata.

    Fält Datatyp
    clientid sträng
    querytime sträng
    marknad sträng
    deviceplatform sträng
    devicemake sträng
    devicemodel sträng
    tillstånd string
    land string
    querydwelltime dubbel
    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-portalen 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>",

Kommentar

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

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

    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
    Plats 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.
    Inloggningslösenord för kluster 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 Plats Sas-token Lämna tomt.
    Bacpac-filnamn Använd standardvärdet om du inte vill använda din egen bacpac-fil.
    Plats 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 är rätt för dig 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, macOS X eller Windows
.NET SDK för Hadoop   ? Windows (för tillfället)
Azure PowerShell   ? Windows

Begränsningar

  • Massexport – Med Linux-baserade 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 batcha 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: