Udostępnij za pomocą


Uruchamianie zadań platformy Apache Sqoop w usłudze HDInsight za pomocą narzędzia Curl

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

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.

  1. 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=sqluser
    
  2. W 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/status
    

    Powinna zostać wyświetlona odpowiedź podobna do następującej:

    {"status":"ok","version":"v1"}
    
  3. 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/sqoop
    

    W tym poleceniu są używane następujące parametry:

    • -d — ponieważ -G nie jest używana, żądanie jest domyślnie używane 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"}
      
  4. Aby sprawdzić stan zadania, użyj następującego polecenia. Zastąp JOBID element wartością zwróconą w poprzednim kroku. Na przykład, jeśli zwracana wartość to {"id":"job_1415651640909_0026"}, to wtedy JOBID miałoby wartość job_1415651640909_0026. Zmień lokalizację jq w 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.state
    

    Jeś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.

  5. Gdy stan zadania zmieni się 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 przypadku wasb:///example/data/sqoop/curl. Ten adres przechowuje dane wyjściowe zadania w katalogu example/data/sqoop/curl w domyślnym kontenerze magazynu używanym przez klaster HDInsight.

    Za pomocą portalu Azure można uzyskać dostęp do blobów stderr i stdout.

  6. 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 -batch przy 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: