Uruchamianie zadań platformy Apache Sqoop w usłudze HDInsight przy użyciu narzędzia Curl
Dowiedz się, jak używać narzędzia Curl do uruchamiania zadań platformy Apache Sqoop w klastrze Apache Hadoop w usłudze HDInsight. W tym artykule pokazano, jak wyeksportować dane z usługi Azure Storage i zaimportować je do bazy danych SQL Server przy użyciu narzędzia Curl. Ten artykuł jest kontynuacją korzystania z platformy Apache Sqoop z usługą Hadoop w usłudze HDInsight.
Narzędzie Curl służy do zademonstrowania sposobu interakcji z usługą HDInsight przy użyciu nieprzetworzonych żądań HTTP do uruchamiania, monitorowania i pobierania wyników zadań Sqoop. Działa to przy użyciu interfejsu API REST webHCat (wcześniej znanego jako Templeton) dostarczonego przez klaster usługi HDInsight.
Wymagania wstępne
Ukończenie konfigurowania środowiska testowego z usługi Apache Sqoop z usługą Hadoop w usłudze HDInsight.
Klient, który wysyła zapytanie do bazy danych Azure SQL. Rozważ użycie SQL Server Management Studio lub Visual Studio Code.
Curl. Curl to narzędzie do transferu danych z lub do klastra usługi HDInsight.
jq. Narzędzie jq służy do przetwarzania danych JSON zwracanych z żądań REST.
Znajomość narzędzia Sqoop. Aby uzyskać więcej informacji, zobacz Sqoop User Guide (Przewodnik użytkownika sqoop).
Przesyłanie zadań platformy Apache Sqoop przy użyciu narzędzia Curl
Użyj narzędzia Curl, aby wyeksportować dane przy użyciu zadań Platformy Apache Sqoop z usługi Azure Storage do SQL Server.
Uwaga
Używając programu Curl lub innego połączenia REST z usługą WebHCat, należy uwierzytelnić żądania, podając nazwę użytkownika i hasło administratora klastra usługi HDInsight. Należy również użyć nazwy klastra jako części identyfikatora URI stosowanego przy wysyłaniu żądań do serwera.
W przypadku poleceń w tej sekcji zastąp element USERNAME
użytkownikiem, aby uwierzytelnił się w klastrze, i zastąp PASSWORD
hasłem dla konta użytkownika. Zastąp ciąg CLUSTERNAME
nazwą klastra.
Interfejs API REST jest zabezpieczony za pomocą uwierzytelniania podstawowego. Należy zawsze tworzyć żądania przy użyciu protokołu HTTPS (HTTP Secure), aby mieć pewność, że poświadczenia są bezpiecznie wysyłane do serwera.
Aby ułatwić korzystanie, ustaw poniższe zmienne. Ten przykład jest oparty na środowisku systemu Windows, popraw je zgodnie z potrzebami dla danego środowiska.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluser
W wierszu polecenia wpisz następujące polecenie, aby sprawdzić możliwość nawiązania połączenia z klastrem usługi HDInsight:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
Użytkownik powinien otrzymywać odpowiedź podobną do następującej:
{"status":"ok","version":"v1"}
Użyj następujących instrukcji, aby przesłać zadanie sqoop:
curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoop
W tym poleceniu są używane następujące parametry:
-d — ponieważ
-G
nie jest używana, żądanie jest domyślnie stosowane do metody POST.-d
określa wartości danych, które są wysyłane z żądaniem.user.name — użytkownik, który uruchamia polecenie.
polecenie — polecenie Sqoop do wykonania.
statusdir — katalog, do którego zostanie zapisany stan tego zadania.
To polecenie zwróci identyfikator zadania, którego można użyć do sprawdzenia stanu zadania.
{"id":"job_1415651640909_0026"}
Aby sprawdzić stan zadania, użyj następującego polecenia. Zastąp
JOBID
ciąg wartością zwróconą w poprzednim kroku. Jeśli na przykład zwracana wartość to{"id":"job_1415651640909_0026"}
, wartośćJOBID
tojob_1415651640909_0026
. Popraw lokalizację zgodnie zjq
potrzebami.set JOBID=job_1415651640909_0026 curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.state
Jeśli zadanie zostało zakończone, stan to POWODZENIE.
Uwaga
To żądanie curl zwraca dokument JavaScript Object Notation (JSON) z informacjami o zadaniu; jq służy do pobierania tylko wartości stanu.
Po zmianie stanu zadania na POWODZENIE możesz pobrać wyniki zadania z usługi Azure Blob Storage. Parametr
statusdir
przekazany za pomocą zapytania zawiera lokalizację pliku wyjściowego; w tym przypadkuwasb:///example/data/sqoop/curl
. Ten adres przechowuje dane wyjściowe zadania w katalogu wexample/data/sqoop/curl
domyślnym kontenerze magazynu używanym przez klaster usługi HDInsight.Za pomocą Azure Portal można uzyskać dostęp do obiektów blob stderr i stdout.
Aby sprawdzić, czy dane zostały wyeksportowane, użyj następujących zapytań z klienta SQL, aby wyświetlić wyeksportowane dane:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
Ograniczenia
- Eksportowanie zbiorcze — w przypadku usługi HDInsight opartej na systemie Linux łącznik Sqoop używany do eksportowania danych do usługi Microsoft SQL Server lub Azure SQL Database nie obsługuje obecnie wstawiania zbiorczego.
- Batching — w przypadku usługi HDInsight opartej na systemie Linux podczas korzystania z przełącznika
-batch
podczas wykonywania wstawiania narzędzie Sqoop wykona wiele wstawiania zamiast wsadowania operacji wstawiania.
Podsumowanie
Jak pokazano w tym dokumencie, możesz użyć nieprzetworzonego żądania HTTP do uruchamiania, monitorowania i wyświetlania wyników zadań Sqoop w klastrze usługi HDInsight.
Aby uzyskać więcej informacji na temat interfejsu REST używanego w tym artykule, zobacz przewodnik interfejsu API REST platformy Apache Sqoop.
Następne kroki
Korzystanie z platformy Apache Sqoop z usługą Apache Hadoop w usłudze HDInsight
W przypadku innych artykułów usługi HDInsight obejmujących program curl: