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

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.

  1. 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
    
  2. 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"}
    
  3. 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"}
      
  4. 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"}akkor JOBID a lesz job_1415651640909_0026. Szükség szerint módosítsa a jq 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.

  5. 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 esetben wasb:///example/data/sqoop/curl). Ez a cím a feladat kimenetét a example/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.

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