Udostępnij za pośrednictwem


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

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.

  1. 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
    
  2. 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"}
    
  3. 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"}
      
  4. 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 to job_1415651640909_0026. Popraw lokalizację zgodnie z jq 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.

  5. 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 przypadku wasb:///example/data/sqoop/curl. Ten adres przechowuje dane wyjściowe zadania w katalogu w example/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.

  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

  • 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: