Använda Apache Sqoop för att importera och exportera data mellan Apache Hadoop i HDInsight och Azure SQL Database
Lär dig hur du använder Apache Sqoop för att importera och exportera mellan ett Apache Hadoop-kluster i Azure HDInsight och Azure SQL Database eller Microsoft SQL Server. Stegen i det här dokumentet använder sqoop
kommandot direkt från huvudnoden i Hadoop-klustret. Du använder SSH för att ansluta till huvudnoden och köra kommandona i det här dokumentet. Den här artikeln är en fortsättning på Använda Apache Sqoop med Hadoop i HDInsight.
Förutsättningar
Slutför konfigurationen av testmiljön från Använd Apache Sqoop med Hadoop i HDInsight.
En SSH-klient. Mer information finns i Ansluta till HDInsight (Apache Hadoop) med hjälp av SSH.
Kunskaper om Sqoop. Mer information finns i Användarhandbok för Sqoop.
Konfigurera
Använd ssh-kommandot för att ansluta till klustret. Redigera kommandot nedan genom att ersätta CLUSTERNAME med namnet på klustret och ange sedan kommandot:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Ange variabler för enkel användning. Ersätt
PASSWORD
,MYSQLSERVER
ochMYDATABASE
med relevanta värden och ange sedan kommandona nedan:export PASSWORD='PASSWORD' export SQL_SERVER="MYSQLSERVER" export DATABASE="MYDATABASE" export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD" export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DABATASE"
Sqoop-export
Från Hive till SQL.
Kontrollera att Sqoop kan se databasen genom att ange kommandot nedan i din öppna SSH-anslutning. Det här kommandot returnerar en lista över databaser.
sqoop list-databases --connect $SERVER_CONNECT
Ange följande kommando för att se en lista med tabeller för den angivna databasen:
sqoop list-tables --connect $SERVER_DB_CONNECT
Om du vill exportera data från Hive-tabellen
hivesampletable
tillmobiledata
tabellen i databasen anger du kommandot nedan i din öppna SSH-anslutning:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
Kontrollera att data har exporterats genom att använda följande frågor från din SSH-anslutning för att visa exporterade data:
sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)" sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
Sqoop-import
Från SQL till Azure Storage.
Ange kommandot nedan i din öppna SSH-anslutning för att importera data från
mobiledata
tabellen i SQL tillwasbs:///tutorials/usesqoop/importeddata
katalogen i HDInsight. Fälten i data avgränsas med ett fliktecken och raderna avslutas med ett nytt radtecken.sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
Du kan också ange en Hive-tabell:
sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --create-hive-table \ --hive-table mobiledata_imported2 \ --hive-import -m 1
När importen har slutförts anger du följande kommando i den öppna SSH-anslutningen för att visa en lista över data i den nya katalogen:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
Använd beeline för att kontrollera att tabellen har skapats i Hive.
Anslut
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Kör varje fråga under en i taget och granska utdata:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Avsluta beeline med
!exit
.
Begränsningar
Massexport – Med Linux-baserade HDInsight stöder inte Sqoop-anslutningsappen som används för att exportera data till SQL massinfogningar.
Batchbearbetning – Med Linux-baserad HDInsight gö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.
Viktigt!
Både HDInsight och SQL Server måste finnas i samma virtuella Azure-nätverk.
Ett exempel finns i Så här ansluter du HDInsight till ditt lokala nätverksdokument .
Mer information om hur du använder HDInsight med ett virtuellt Azure-nätverk finns i hur du utökar HDInsight med Azure Virtual Network-dokument . Mer information om Azure Virtual Network finns i översiktsdokumentet för virtuellt nätverk.
SQL Server måste konfigureras för att tillåta SQL-autentisering. Mer information finns i dokumentet Välj ett autentiseringsläge .
Du kan behöva konfigurera SQL Server för att acceptera fjärranslutningar.
Nästa steg
Nu har du lärt dig hur du använder Sqoop. Mer information finns i:
- Använd Apache Oozie med HDInsight: Använd Sqoop-åtgärd i ett Oozie-arbetsflöde.
- Analysera flygfördröjningsdata med HDInsight: Använd interaktiv fråga för att analysera flygfördröjningsdata och använd sedan Sqoop för att exportera data till en databas i Azure.
- Ladda upp data till HDInsight: Hitta andra metoder för att ladda upp data till HDInsight/Azure Blob Storage.