Apache Sqoop gebruiken om gegevens te importeren en te exporteren tussen Apache Hadoop in HDInsight en Azure SQL Database
Meer informatie over het gebruik van Apache Sqoop om te importeren en exporteren tussen een Apache Hadoop-cluster in Azure HDInsight en Azure SQL Database of Microsoft SQL Server. In de stappen in dit document wordt de sqoop
opdracht rechtstreeks vanuit het hoofdknooppunt van het Hadoop-cluster gebruikt. U gebruikt SSH om verbinding te maken met het hoofdknooppunt en de opdrachten in dit document uit te voeren. Dit artikel is een vervolg van Apache Sqoop gebruiken met Hadoop in HDInsight.
Vereisten
Voltooiing van de testomgeving instellen vanuit Apache Sqoop gebruiken met Hadoop in HDInsight.
Een SSH-client. Zie voor meer informatie Verbinding maken met HDInsight (Apache Hadoop) via SSH.
Bekendheid met Sqoop. Zie de Gebruikershandleiding voor Sqoop voor meer informatie.
Instellingen
Gebruik de ssh-opdracht om verbinding te maken met uw cluster. Bewerk de onderstaande opdracht door CLUSTERNAME te vervangen door de naam van uw cluster. Voer vervolgens deze opdracht in:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Stel variabelen in voor gebruiksgemak. Vervang,
MYSQLSERVER
enMYDATABASE
doorPASSWORD
de relevante waarden en voer de onderstaande opdrachten in: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
Van Hive naar SQL.
Als u wilt controleren of Sqoop uw database kan zien, voert u de onderstaande opdracht in uw geopende SSH-verbinding in. Met deze opdracht wordt een lijst met databases geretourneerd.
sqoop list-databases --connect $SERVER_CONNECT
Voer de volgende opdracht in om een lijst met tabellen voor de opgegeven database weer te geven:
sqoop list-tables --connect $SERVER_DB_CONNECT
Als u gegevens uit de Hive-tabel
hivesampletable
wilt exporteren naar demobiledata
tabel in uw database, voert u de onderstaande opdracht in uw open SSH-verbinding in:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
Als u wilt controleren of gegevens zijn geëxporteerd, gebruikt u de volgende query's vanuit uw SSH-verbinding om de geëxporteerde gegevens weer te geven:
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 importeren
Van SQL naar Azure Storage.
Voer de onderstaande opdracht in uw geopende SSH-verbinding in om gegevens uit de
mobiledata
tabel in SQL te importeren in dewasbs:///tutorials/usesqoop/importeddata
map in HDInsight. De velden in de gegevens worden gescheiden door een tabteken en de regels worden beëindigd door een nieuw regelteken.sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
U kunt ook een Hive-tabel opgeven:
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
Nadat het importeren is voltooid, voert u de volgende opdracht in uw geopende SSH-verbinding in om de gegevens in de nieuwe map weer te geven:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
Gebruik beeline om te controleren of de tabel is gemaakt in Hive.
Verbinden
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Voer elke query één voor één uit en controleer de uitvoer:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Sluit beeline af met
!exit
.
Beperkingen
Bulkexport: met HDInsight op basis van Linux biedt de Sqoop-connector die wordt gebruikt voor het exporteren van gegevens naar SQL geen ondersteuning voor bulkinvoegingen.
Batching: met HDInsight op basis van Linux, maakt
-batch
Sqoop meerdere invoegingen in plaats van de invoegbewerkingen in batches te plaatsen.
Belangrijke aandachtspunten
Zowel HDInsight als SQL Server moeten zich in hetzelfde virtuele Azure-netwerk bevinden.
Zie HdInsight verbinden met uw on-premises netwerkdocument voor een voorbeeld.
Zie voor meer informatie over het gebruik van HDInsight met een virtueel Azure-netwerk het document HDInsight uitbreiden met Azure Virtual Network. Zie het document Virtual Network Overview (Overzicht van virtueel netwerk) voor meer informatie over Azure Virtual Network.
SQL Server moet worden geconfigureerd om SQL-verificatie toe te staan. Zie het document Een verificatiemodus kiezen voor meer informatie.
Mogelijk moet u SQL Server configureren om externe verbindingen te accepteren.
Volgende stappen
U hebt nu geleerd hoe u Sqoop gebruikt. Raadpleeg voor meer informatie:
- Apache Oozie gebruiken met HDInsight: Sqoop-actie gebruiken in een Oozie-werkstroom.
- Vluchtvertragingsgegevens analyseren met BEHULP van HDInsight: Interactive Query gebruiken om vluchtvertragingsgegevens te analyseren en vervolgens Sqoop gebruiken om gegevens te exporteren naar een database in Azure.
- Gegevens uploaden naar HDInsight: zoek andere methoden voor het uploaden van gegevens naar HDInsight/Azure Blob Storage.