Importowanie i eksportowanie danych między usługą Apache Hadoop w usłudze HDInsight i usłudze Azure SQL Database za pomocą narzędzia Apache Sqoop

Dowiedz się, jak używać platformy Apache Sqoop do importowania i eksportowania między klastrem Apache Hadoop w usługach Azure HDInsight i Azure SQL Database lub Microsoft SQL Server. Kroki opisane w tym dokumencie używają sqoop polecenia bezpośrednio z węzła głównego klastra Hadoop. Użyj protokołu SSH, aby nawiązać połączenie z węzłem głównym i uruchomić polecenia w tym dokumencie. Ten artykuł jest kontynuacją korzystania z platformy Apache Sqoop z usługą Hadoop w usłudze HDInsight.

Wymagania wstępne

Konfiguruj

  1. Użyj polecenia ssh, aby nawiązać połączenie z klastrem. Zmodyfikuj poniższe polecenie, zastępując ciąg CLUSTERNAME nazwą klastra, a następnie wprowadź polecenie:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Aby ułatwić korzystanie, ustaw zmienne. Zastąp PASSWORDwartości , MYSQLSERVERi MYDATABASE odpowiednimi wartościami, a następnie wprowadź poniższe polecenia:

    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"
    

Eksport sqoop

Z programu Hive do bazy danych SQL.

  1. Aby sprawdzić, czy narzędzie Sqoop może wyświetlić bazę danych, wprowadź poniższe polecenie w otwartym połączeniu SSH. To polecenie zwraca listę baz danych.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Wprowadź następujące polecenie, aby wyświetlić listę tabel dla określonej bazy danych:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Aby wyeksportować dane z tabeli Programu Hive hivesampletable do mobiledata tabeli w bazie danych, wprowadź poniższe polecenie w otwartym połączeniu SSH:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. Aby sprawdzić, czy dane zostały wyeksportowane, użyj następujących zapytań z połączenia SSH, aby wyświetlić wyeksportowane dane:

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

Importowanie sqoop

Z bazy danych SQL do usługi Azure Storage.

  1. Wprowadź poniższe polecenie w otwartym połączeniu SSH, aby zaimportować dane z mobiledata tabeli w języku SQL do wasbs:///tutorials/usesqoop/importeddata katalogu w usłudze HDInsight. Pola w danych są oddzielone znakiem tabulacji, a wiersze są przerywane znakiem nowego wiersza.

    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. Alternatywnie można również określić tabelę programu 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 zakończeniu importowania wprowadź następujące polecenie w otwartym połączeniu SSH, aby wyświetlić listę danych w nowym katalogu:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Użyj narzędzia beeline , aby sprawdzić, czy tabela została utworzona w programie Hive.

    1. Połącz

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Wykonaj każde poniższe zapytanie pojedynczo i przejrzyj dane wyjściowe:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. Zakończ działanie beeline za pomocą polecenia !exit.

Ograniczenia

  • Eksport zbiorczy — w przypadku usługi HDInsight opartej na systemie Linux łącznik Sqoop używany do eksportowania danych do bazy danych SQL nie obsługuje operacji wstawiania zbiorczego.

  • Batching — w przypadku usługi HDInsight opartej na systemie Linux podczas korzystania z przełącznika -batch podczas wstawiania narzędzie Sqoop wykonuje wiele operacji wstawiania zamiast dzielenia na partie operacji wstawiania.

Ważne uwagi

Następne kroki

Teraz wiesz już, jak używać narzędzia Sqoop. Aby dowiedzieć się więcej, zobacz: