Apache Sqoop-feladatok futtatása a HDInsightban a Curl használatával
Megtudhatja, hogyan futtathat Apache Sqoop-feladatokat a Curl használatával egy Apache Hadoop-fürtön a HDInsightban. Ez a cikk bemutatja, hogyan exportálhat adatokat az Azure Storage-ból, és hogyan importálhatja őket egy SQL Server adatbázisba a Curl használatával. Ez a cikk az Apache Sqoop és a Hadoop használata a HDInsightban című cikk folytatása.
A Curl azt mutatja be, hogyan használhatja a HDInsightot nyers HTTP-kérések használatával a Sqoop-feladatok futtatásához, monitorozásához és lekéréséhez. Ez a HDInsight-fürt által biztosított WebHCat REST API (korábbi nevén Templeton) használatával működik.
Előfeltételek
A tesztelési környezet beállítása az Apache Sqoop és a Hadoop használatával a HDInsightban befejeződött.
Egy ügyfél, amely lekérdezi a Azure SQL-adatbázist. Fontolja meg a SQL Server Management Studio vagy a Visual Studio Code használatát.
Curl. A Curl egy olyan eszköz, amely adatokat továbbít egy HDInsight-fürtről vagy az azokból egy HDInsight-fürtbe.
jq. A jq segédprogram a REST-kérelmekből visszaadott JSON-adatok feldolgozására szolgál.
A Sqoop ismerete. További információ: Sqoop felhasználói útmutató.
Apache Sqoop-feladatok küldése a Curl használatával
A Curl használatával Apache Sqoop-feladatokkal exportálhat adatokat az Azure Storage-ból a SQL Server.
Megjegyzés
Amikor a Curl vagy más REST kommunikációt használ a WebHCattel, hitelesítenie kell a kéréseket a HDInsight fürt rendszergazdája felhasználónevének és jelszavának megadásával. A fürtnevet a kérések kiszolgálóhoz küldéséhez használt egységes erőforrás-azonosító (URI) részeként is használnia kell.
Az ebben a szakaszban található parancsok esetében cserélje le a elemet USERNAME
a felhasználóra a fürt hitelesítéséhez, és cserélje le a elemet PASSWORD
a felhasználói fiók jelszavára. Cserélje le a CLUSTERNAME
elemet a fürt nevére.
A REST API védelméről alapszintű hitelesítés gondoskodik. Mindig biztonságos HTTP-n (HTTPS-en) keresztül kell kéréseket végeznie, hogy a hitelesítő adatait biztonságos módon küldje a kiszolgálóhoz.
A könnyű használat érdekében állítsa be az alábbi változókat. Ez a példa egy Windows-környezeten alapul, és szükség szerint felülvizsgálja a környezetet.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluser
Egy parancssorból a következő paranccsal ellenőrizze, hogy tud-e kapcsolódni a HDInsight-fürthöz:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
A következőhöz hasonló választ kell kapnia:
{"status":"ok","version":"v1"}
Sqoop-feladat elküldéséhez használja az alábbiakat:
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
Ezen parancs paraméterei a következők:
-d – Mivel
-G
nincs használatban, a kérés alapértelmezés szerint a POST metódusra érvényes.-d
a kéréssel küldött adatértékeket adja meg.user.name – A parancsot futtató felhasználó.
command – A végrehajtandó Sqoop-parancs.
statusdir – Az a könyvtár, amelybe a feladat állapota meg lesz írva.
Ez a parancs egy feladatazonosítót ad vissza, amely a feladat állapotának ellenőrzésére használható.
{"id":"job_1415651640909_0026"}
A feladat állapotának ellenőrzéséhez használja az alábbi parancsot. Cserélje le
JOBID
az értéket az előző lépésben visszaadott értékre. Ha például a visszatérési érték a ,{"id":"job_1415651640909_0026"}
akkorJOBID
a leszjob_1415651640909_0026
. Szükség szerint módosítsa ajq
helyét.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
Ha a feladat befejeződött, az állapot SIKERES lesz.
Megjegyzés
Ez a Curl-kérelem egy JavaScript Object Notation (JSON) dokumentumot ad vissza a feladattal kapcsolatos információkkal; A jq csak az állapotérték lekérésére szolgál.
Miután a feladat állapota SIKERESre változott, lekérheti a feladat eredményeit az Azure Blob Storage-ból. A
statusdir
lekérdezéssel átadott paraméter tartalmazza a kimeneti fájl helyét( ebben az esetbenwasb:///example/data/sqoop/curl
). Ez a cím a feladat kimenetét aexample/data/sqoop/curl
HDInsight-fürt által használt alapértelmezett tároló könyvtárában tárolja.Az Azure Portal használatával hozzáférhet az stderr és az stdout blobokhoz.
Az adatok exportálásának ellenőrzéséhez használja az SQL-ügyfél következő lekérdezéseit az exportált adatok megtekintéséhez:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
Korlátozások
- Tömeges exportálás – Linux-alapú HDInsight esetén az adatok Microsoft SQL Server vagy Azure SQL Database-be való exportálásához használt Sqoop-összekötő jelenleg nem támogatja a tömeges beszúrásokat.
- Kötegelés – Linux-alapú HDInsight esetén a beszúrások végrehajtásakor a kapcsoló használatakor a
-batch
Sqoop több beszúrást hajt végre a beszúrási műveletek kötegelése helyett.
Összefoglalás
Ahogy az ebben a dokumentumban is látható, nyers HTTP-kéréssel futtathatja, figyelheti és tekintheti meg a Sqoop-feladatok eredményeit a HDInsight-fürtön.
A cikkben használt REST felülettel kapcsolatos további információkért lásd az Apache Sqoop REST API-útmutatóját.
Következő lépések
Az Apache Sqoop használata az Apache Hadooptal a HDInsighton
Egyéb, curl-t tartalmazó HDInsight-cikkek esetén: