Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak używać narzędzia Curl do uruchamiania zadań 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 programu 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 użyciem narzędzia Apache Sqoop z usługą Hadoop w usłudze HDInsight.
Klient, który wysyła zapytanie do usługi Azure SQL Database. Rozważ użycie programu 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 (Podręcznik 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 programu SQL Server.
Uwaga
W przypadku korzystania z narzędzia Curl lub innej komunikacji REST z serwerem 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 w ramach identyfikatora URI (Uniform Resource Identifier) używanego do wysyłania żądań do serwera.
W przypadku poleceń w tej części zastąp USERNAME nazwą użytkownika, aby się uwierzytelnić w klastrze, a PASSWORD hasłem do konta użytkownika. Zastąp ciąg CLUSTERNAME nazwą klastra.
Interfejs API REST jest zabezpieczony za pomocą uwierzytelniania podstawowego. Zawsze należy wysyłać żądania przy użyciu protokołu Secure HTTP (HTTPS), aby upewnić się, ż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, zrewiduj je zgodnie z potrzebami w danym środowisku.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluserW wierszu polecenia użyj następującego polecenia, aby sprawdzić, czy możesz nawiązać połączenie z klastrem usługi HDInsight:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusPowinna zostać wyświetlona odpowiedź podobna do następującej:
{"status":"ok","version":"v1"}Aby przesłać zadanie sqoop, użyj następujących instrukcji:
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/sqoopW tym poleceniu są używane następujące parametry:
-d — ponieważ
-Gnie jest używana, żądanie jest domyślnie używane do metody POST.-dokreś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
JOBIDelement wartością zwróconą w poprzednim kroku. Na przykład, jeśli zwracana wartość to{"id":"job_1415651640909_0026"}, to wtedyJOBIDmiałoby wartośćjob_1415651640909_0026. Zmień lokalizacjęjqw razie potrzeby.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.stateJeśli zadanie zostanie zakończone, stan będzie 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.
Gdy stan zadania zmieni się na POWODZENIE, możesz pobrać wyniki zadania z usługi Azure Blob Storage. Parametr
statusdirprzekazany za pomocą zapytania zawiera lokalizację pliku wyjściowego; w tym przypadkuwasb:///example/data/sqoop/curl. Ten adres przechowuje dane wyjściowe zadania w kataloguexample/data/sqoop/curlw domyślnym kontenerze magazynu używanym przez klaster HDInsight.Za pomocą portalu Azure można uzyskać dostęp do blobów 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
- Eksport zbiorczy — w przypadku usługi HDInsight opartej na systemie Linux łącznik Sqoop używany do eksportowania danych do programu Microsoft SQL Server lub usługi Azure SQL Database nie obsługuje obecnie operacji wstawiania zbiorczego.
- Przetwarzanie wsadowe — w przypadku usługi HDInsight opartej na systemie Linux, podczas korzystania z przełącznika
-batchprzy wstawianiu, narzędzie Sqoop wykona wiele operacji wstawiania zamiast dzielić je na partie.
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 po interfejsie API REST platformy Apache Sqoop.
Następne kroki
Korzystanie z narzędzia Apache Sqoop z usługą Apache Hadoop w usłudze HDInsight
Dla innych artykułów dotyczących usługi HDInsight związanych z programem curl: