Spouštění úloh Apache Sqoop ve službě HDInsight pomocí curl

Naučte se používat Curl ke spouštění úloh Apache Sqoop v clusteru Apache Hadoop ve službě HDInsight. Tento článek ukazuje, jak exportovat data ze služby Azure Storage a importovat je do SQL Server databáze pomocí aplikace Curl. Tento článek je pokračováním tématu Použití Apache Sqoopu s Hadoopem ve službě HDInsight.

Curl se používá k předvedení toho, jak můžete pracovat se službou HDInsight pomocí nezpracovaných požadavků HTTP ke spouštění, monitorování a načítání výsledků úloh Sqoop. Funguje to pomocí rozhraní REST API WebHCat (dříve označovaného jako Templeton), které poskytuje cluster HDInsight.

Požadavky

Odesílání úloh Apache Sqoop pomocí curl

Pomocí curlu můžete exportovat data pomocí úloh Apache Sqoop ze služby Azure Storage do SQL Server.

Poznámka

Pokud používáte Curl nebo jinou komunikaci REST s WebHCat, je třeba ověřit žádosti zadáním uživatelského jména a hesla pro správce clusteru HDInsight. Název clusteru také musíte použít jako součást identifikátoru URI (Uniform Resource Identifier) sloužícímu k odesílání požadavků na server.

U příkazů v této části nahraďte USERNAME uživatelem pro ověření ve clusteru a nahraďte PASSWORD heslem pro uživatelský účet. Nahraďte CLUSTERNAME názvem svého clusteru.

Rozhraní API REST je zabezpečeno pomocí základního ověřování. Vždy doporučujeme provádět požadavky pomocí protokolu HTTPS (Secure HTTP) a pomoci tak zajistit, že přihlašovací údaje budou na server odeslány bezpečně.

  1. Pokud chcete snadno používat, nastavte níže uvedené proměnné. Tento příklad je založený na prostředí Windows a podle potřeby ho revidujte.

    set CLUSTERNAME=
    set USERNAME=admin
    set PASSWORD=
    set SQLDATABASESERVERNAME=
    set SQLDATABASENAME=
    set SQLPASSWORD=
    set SQLUSER=sqluser
    
  2. Z příkazového řádku použijte následující příkaz k ověření, zda se můžete připojit ke clusteru HDInsight:

    curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
    

    Měla by se zobrazit odpověď podobná následujícímu:

    {"status":"ok","version":"v1"}
    
  3. K odeslání úlohy sqoop použijte následující:

    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
    

    Parametry použité v tomto příkazu jsou následující:

    • -d – Vzhledem k tomu -G , že se nepoužívá, použije se výchozí hodnota požadavku na metodu POST. -d určuje hodnoty dat, které se odesílají spolu s požadavkem.

      • user.name – uživatel, který spouští příkaz.

      • command – příkaz Sqoop, který se má spustit.

      • statusdir – adresář, do kterého se zapíše stav pro tuto úlohu.

      Tento příkaz vrátí ID úlohy, které lze použít ke kontrole stavu úlohy.

      {"id":"job_1415651640909_0026"}
      
  4. Pokud chcete zkontrolovat stav úlohy, použijte následující příkaz. Nahraďte JOBID hodnotou vrácenou v předchozím kroku. Pokud by byla například vrácená {"id":"job_1415651640909_0026"}hodnota , pak JOBID by byla job_1415651640909_0026. Podle potřeby upravte jq umístění.

    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
    

    Pokud se úloha dokončí, bude stav ÚSPĚCH.

    Poznámka

    Tento požadavek Curl vrátí dokument JSON (JavaScript Object Notation) s informacemi o úloze. jq se používá k načtení pouze hodnoty stavu.

  5. Jakmile se stav úlohy změní na ÚSPĚCH, můžete načíst výsledky úlohy ze služby Azure Blob Storage. Parametr statusdir předaný s dotazem obsahuje umístění výstupního souboru. wasb:///example/data/sqoop/curlV tomto případě . Tato adresa ukládá výstup úlohy do adresáře ve example/data/sqoop/curl výchozím kontejneru úložiště používaném clusterem HDInsight.

    Pomocí Azure Portal můžete získat přístup k objektům blob stderr a stdout.

  6. Pokud chcete ověřit, že se data exportovala, použijte k zobrazení exportovaných dat následující dotazy z klienta SQL:

    SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK);
    SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
    

Omezení

  • Hromadný export – Konektor Sqoop, který se používá k exportu dat do databáze Microsoft SQL Server nebo Azure SQL Database se systémem Linux, v současné době nepodporuje hromadné vložení.
  • Dávkování – při použití hdinsightu založeného na Linuxu -batch bude Sqoop při použití přepínače při vkládání provádět více vložení místo operací vložení.

Souhrn

Jak je znázorněno v tomto dokumentu, můžete pomocí nezpracovaného požadavku HTTP spouštět, monitorovat a zobrazovat výsledky úloh Sqoop v clusteru HDInsight.

Další informace o rozhraní REST použitém v tomto článku najdete v průvodci rozhraním APACHE Sqoop REST API.

Další kroky

Použití Apache Sqoopu s Apache Hadoopem ve službě HDInsight

Další články o HDInsight týkající se curl: