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
Dokončení nastavení testovacího prostředí v tématu Použití Apache Sqoopu s Hadoopem ve službě HDInsight.
Klient pro dotazování databáze Azure SQL. Zvažte použití SQL Server Management Studio nebo Editoru Visual Studio Code.
Kudrlinka. Curl je nástroj pro přenos dat z clusteru HDInsight nebo do clusteru HDInsight.
jq. Nástroj jq se používá ke zpracování dat JSON vrácených z požadavků REST.
Znalost Sqoopu. Další informace najdete v uživatelské příručce pro Sqoop.
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ě.
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
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"}
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"}
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 , pakJOBID
by bylajob_1415651640909_0026
. Podle potřeby upravtejq
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.
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/curl
V tomto případě . Tato adresa ukládá výstup úlohy do adresáře veexample/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.
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: