Megosztás a következőn keresztül:


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

Beállítás

  1. 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
    
  2. A könnyű használat érdekében állítsa be a változókat. Cserélje le PASSWORDés MYSQLSERVERMYDATABASE í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.

  1. 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
    
  2. A megadott adatbázis tábláinak megtekintéséhez írja be a következő parancsot:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Ha adatokat szeretne exportálni a Hive hivesampletable táblából az mobiledata 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
    
  4. 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.

  1. Írja be az alábbi parancsot a nyílt SSH-kapcsolatba, hogy adatokat importáljon az mobiledata SQL-táblából a wasbs:///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
    
  2. 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
    
  3. 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
    
  4. A beeline használatával ellenőrizze, hogy a tábla létrejött-e a Hive-ben.

    1. Kapcsolódás

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. 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;
      
    3. 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ó: