Adatok importálása és exportálása az Apache Sqoop használatával a HDInsighton futó Apache Hadoop és az Azure SQL Database között
Megtudhatja, hogyan importálhat és exportálhat Apache Hadoop-fürtök között az Apache Sqoop használatával az Azure HDInsightban, az Azure SQL Database-ben vagy a Microsoft SQL Serverben. A dokumentum lépései közvetlenül a sqoop
Hadoop-fürt átjárócsomópontjáról származó parancsot használják. Az SSH használatával csatlakozhat a fő csomóponthoz, és futtathatja a parancsokat ebben a dokumentumban. Ez a cikk az Apache Sqoop és a Hadoop HDInsightban való használatának folytatása.
Előfeltételek
Befejeződött a tesztelési környezet beállítása az Apache Sqoop és a Hadoop használatával a HDInsightban.
Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val.
A Sqoop ismerete. További információt a Sqoop felhasználói útmutatójában talál.
Beállítás
Az ssh paranccsal csatlakozzon a fürthöz. Szerkessze az alábbi parancsot úgy, hogy lecseréli a CLUSTERNAME nevet a fürt nevére, majd írja be a parancsot:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
A könnyű használat érdekében állítsa be a változókat. Cserélje le
PASSWORD
ésMYSQLSERVER
MYDATABASE
írja be a megfelelő értékeket, majd írja be az alábbi parancsokat: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álás
A Hive-től az SQL-hez.
Annak ellenőrzéséhez, hogy a Sqoop látja-e az adatbázist, írja be az alábbi parancsot a nyitott SSH-kapcsolatba. Ez a parancs az adatbázisok listáját adja vissza.
sqoop list-databases --connect $SERVER_CONNECT
A megadott adatbázis tábláinak megtekintéséhez írja be a következő parancsot:
sqoop list-tables --connect $SERVER_DB_CONNECT
Ha adatokat szeretne exportálni a Hive
hivesampletable
táblából azmobiledata
adatbázis táblájába, írja be az alábbi parancsot a nyílt SSH-kapcsolatba:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
Az adatok exportálásának ellenőrzéséhez használja az SSH-kapcsolat alábbi lekérdezéseit az exportált adatok megtekintéséhez:
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álás
SQL-ről Azure Storage-ra.
Írja be az alábbi parancsot a nyílt SSH-kapcsolatba, hogy adatokat importáljon az
mobiledata
SQL-táblából awasbs:///tutorials/usesqoop/importeddata
HDInsight könyvtárába. Az adatok mezőit tabulátorkarakterek választják el egymástól, a sorokat pedig egy új sorkarakterek zárják le.sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
Másik lehetőségként megadhat egy Hive-táblát is:
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
Miután az importálás befejeződött, írja be a következő parancsot a megnyitott SSH-kapcsolatba az új könyvtárban lévő adatok listázásához:
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
A beeline használatával ellenőrizze, hogy a tábla létrejött-e a Hive-ben.
Kapcsolódás
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Hajtsa végre egyenként az egyes lekérdezéseket, és tekintse át a kimenetet:
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Kilépés a beeline-ból a
!exit
.
Korlátozások
Tömeges exportálás – A Linux-alapú HDInsighttal az adatok SQL-be való exportálásához használt Sqoop-összekötő nem támogatja a tömeges beszúrásokat.
Kötegelés – Linux-alapú HDInsight esetén a Sqoop a
-batch
beszúrási műveletek kötegelése helyett több beszúrást is végez a kapcsoló használatakor.
Fontos tényezők
A HDInsightnak és az SQL Servernek ugyanazon az Azure-beli virtuális hálózaton kell lennie.
Példa: A HDInsight csatlakoztatása a helyszíni hálózati dokumentumhoz.
A HDInsight Azure-beli virtuális hálózattal való használatáról további információt a HDInsight azure-beli virtuális hálózati dokumentumokkal való kiterjesztéséről talál. Az Azure Virtual Network szolgáltatással kapcsolatos további információkért tekintse meg a virtuális hálózat áttekintését ismertető dokumentumot.
Az SQL Servert úgy kell konfigurálni, hogy engedélyezze az SQL-hitelesítést. További információkért lásd a Hitelesítési mód kiválasztása dokumentumot.
Előfordulhat, hogy az SQL Servert úgy kell konfigurálnia, hogy távoli kapcsolatokat fogadjon el.
Következő lépések
Most már megtanulta, hogyan használhatja a Sqoopot. További információ:
- Az Apache Oozie használata a HDInsighttal: Sqoop-művelet használata Oozie-munkafolyamatokban.
- Repülési késleltetési adatok elemzése a HDInsight használatával: Az Interaktív lekérdezéssel elemezheti a járatkésés adatait, majd a Sqoop használatával exportálhat adatokat egy Azure-beli adatbázisba.
- Adatok feltöltése a HDInsightba: További módszerek keresése az adatok HDInsightba/Azure Blob Storage-ba való feltöltéséhez.