Použití Apache Sqoopu k importu a exportu dat mezi Apache Hadoopem ve službě HDInsight a službou Azure SQL Database

Naučte se používat Apache Sqoop k importu a exportu mezi clusterem Apache Hadoop v Azure HDInsight a Azure SQL Database nebo Microsoft SQL Serverem. Kroky v tomto dokumentu používají sqoop příkaz přímo z hlavního uzlu clusteru Hadoop. Pomocí SSH se připojíte k hlavnímu uzlu a spustíte příkazy v tomto dokumentu. Tento článek je pokračováním použití Apache Sqoopu se systémem Hadoop ve službě HDInsight.

Požadavky

Nastavení

  1. Pomocí příkazu ssh se připojte ke clusteru. Upravte následující příkaz nahrazením clusteru názvem clusteru a zadáním příkazu:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Pro usnadnění použití nastavte proměnné. Nahraďte PASSWORD, MYSQLSERVERa MYDATABASE odpovídajícími hodnotami a zadejte následující příkazy:

    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"
    

Export Sqoopu

Z Hivu do SQL.

  1. Pokud chcete ověřit, že Sqoop vidí vaši databázi, zadejte do otevřeného připojení SSH následující příkaz. Tento příkaz vrátí seznam databází.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Zadáním následujícího příkazu zobrazíte seznam tabulek pro zadanou databázi:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Pokud chcete exportovat data z tabulky Hive hivesampletable do mobiledata tabulky v databázi, zadejte do otevřeného připojení SSH následující příkaz:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. K ověření exportu dat použijte následující dotazy z připojení SSH k zobrazení exportovaných dat:

    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)"
    

Import Sqoopu

Z SQL do úložiště Azure.

  1. Do otevřeného připojení SSH zadejte následující příkaz pro import dat z mobiledata tabulky v SQL do adresáře ve službě wasbs:///tutorials/usesqoop/importeddata HDInsight. Pole v datech jsou oddělená znakem tabulátoru a řádky jsou ukončeny znakem nového řádku.

    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. Případně můžete také zadat tabulku Hive:

    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. Po dokončení importu zadejte do otevřeného připojení SSH následující příkaz, který zobrazí seznam dat v novém adresáři:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Pomocí beeline ověřte, že se tabulka vytvořila v Hivu.

    1. Propojit

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Spusťte každý dotaz níže po jednom a zkontrolujte výstup:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. Ukončete beeline s !exit.

Omezení

  • Hromadný export – S Linuxem HDInsight konektor Sqoop používaný k exportu dat do SQL nepodporuje hromadné vkládání.

  • Dávkování – se službou HDInsight se systémem Linux, při použití -batch přepínače při provádění vkládání provede Sqoop několik vložení místo dávkování operací vložení.

Důležitá poznámka

Další kroky

Teď jste se naučili používat Sqoop. Další informace najdete v následujících tématech: