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.
Välj följande bild för att öppna Resource Manager-mallen i Azure-portalen.
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 äre6qhezrh2pdqu
.Välj Jag godkänner de villkor som anges ovan.
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:
- Använda Apache Hive med HDInsight
- Ladda upp data till HDInsight: Hitta andra metoder för att ladda upp data till HDInsight/Azure Blob Storage.
- Använda Apache Sqoop för att importera och exportera data mellan Apache Hadoop på HDInsight och SQL Database