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
Ukończenie konfigurowania środowiska testowego z użyciem narzędzia Apache Sqoop z usługą Hadoop w usłudze HDInsight.
Klient SSH. Aby uzyskać więcej informacji, zobacz Łączenie się z usługą HDInsight (Apache Hadoop) przy użyciu protokołu SSH.
Znajomość narzędzia Sqoop. Aby uzyskać więcej informacji, zobacz Sqoop User Guide (Podręcznik użytkownika sqoop).
Konfiguruj
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
Aby ułatwić korzystanie, ustaw zmienne. Zastąp
PASSWORD
wartości ,MYSQLSERVER
iMYDATABASE
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.
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
Wprowadź następujące polecenie, aby wyświetlić listę tabel dla określonej bazy danych:
sqoop list-tables --connect $SERVER_DB_CONNECT
Aby wyeksportować dane z tabeli Programu Hive
hivesampletable
domobiledata
tabeli w bazie danych, wprowadź poniższe polecenie w otwartym połączeniu SSH:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
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.
Wprowadź poniższe polecenie w otwartym połączeniu SSH, aby zaimportować dane z
mobiledata
tabeli w języku SQL dowasbs:///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
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
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
Użyj narzędzia beeline , aby sprawdzić, czy tabela została utworzona w programie Hive.
Połącz
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
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;
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
Zarówno usługa HDInsight, jak i program SQL Server muszą znajdować się w tej samej sieci wirtualnej platformy Azure.
Przykład można znaleźć w temacie How to connect HDInsight to your on-premises network document (Jak połączyć usługę HDInsight z lokalnym dokumentem sieciowym ).
Aby uzyskać więcej informacji na temat korzystania z usługi HDInsight z siecią wirtualną platformy Azure, zobacz jak rozszerzyć usługę HDInsight przy użyciu usługi Azure Virtual Network . Aby uzyskać więcej informacji na temat usługi Azure Virtual Network, zobacz dokument Omówienie sieci wirtualnej.
Program SQL Server musi być skonfigurowany tak, aby zezwalał na uwierzytelnianie SQL. Aby uzyskać więcej informacji, zobacz dokument Wybieranie trybu uwierzytelniania.
Może być konieczne skonfigurowanie programu SQL Server w celu akceptowania połączeń zdalnych.
Następne kroki
Teraz wiesz już, jak używać narzędzia Sqoop. Aby dowiedzieć się więcej, zobacz:
- Korzystanie z usługi Apache Oozie z usługą HDInsight: użyj akcji Sqoop w przepływie pracy Oozie.
- Analizowanie danych opóźnienia lotu przy użyciu usługi HDInsight: użyj interakcyjnego zapytania do analizowania danych opóźnienia lotu, a następnie użyj narzędzia Sqoop, aby wyeksportować dane do bazy danych na platformie Azure.
- Przekazywanie danych do usługi HDInsight: znajdź inne metody przekazywania danych do usługi HDInsight/Azure Blob Storage.