Share via


Az Apache Beeline-ügyfél használata az Apache Hive-nal

Ez a cikk azt ismerteti, hogyan hozhat létre és hajthat végre Apache Hive-lekérdezéseket SSH-kapcsolaton keresztül a parancssori Apache Beeline-ügyfél használatával.

Háttér

A Beeline egy Hive-ügyfél, amely a HDInsight-fürt átjárócsomópontjain található. Ez a cikk bemutatja, hogyan használhatja ezt az eszközt példákon keresztül Egy Hive-lekérdezés és egy HiveQL-fájl használatával.

Ha csatlakozni szeretne a HDInsight-fürtön telepített Beeline-ügyfélhez, vagy helyileg szeretné telepíteni a Beeline-t, kövesse az útmutatónkat az Apache Beeline-hoz való csatlakozáshoz vagy telepítéséhez.

A Beeline JDBC használatával csatlakozik a HDInsight-fürtön üzemeltetett HiveServer2 szolgáltatáshoz. A Beeline használatával távolról is elérheti a Hive on HDInsightot az interneten keresztül. Az alábbi példák a HDInsighthoz a Beeline-ból való csatlakozáshoz használt leggyakoribb kapcsolati sztringeket ismertetik.

Példák előfeltételei

  • Hadoop-fürt az Azure HDInsightban. Ha fürtre van szüksége, kövesse az útmutatónkat egy HDInsight-fürt létrehozásához.

  • Figyelje meg a fürt elsődleges tárolójának URI-sémáját. Például wasb:// az Azure Storage, abfs:// a Azure Data Lake Storage Gen2 vagy adl:// Azure Data Lake Storage Gen1 esetében. Ha a biztonságos átvitel engedélyezve van az Azure Storage-ban, az URI a következő wasbs://: . További információ: Biztonságos átvitel.

  • Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val. A dokumentum legtöbb lépése feltételezi, hogy a Beeline-t egy SSH-munkamenetből a fürtbe használja. Használhat helyi Beeline-ügyfelet is, de a jelen cikkben nem foglalkozunk ezekkel a lépésekkel.

Hive-lekérdezések futtatása

Ez a példa a Beeline-ügyfél SSH-kapcsolatból való használatával kapcsolatos.

  1. Nyisson meg egy SSH-kapcsolatot a fürttel az alábbi kóddal. Cserélje le az sshuser elemet a fürt SSH-felhasználójára, illetve a CLUSTERNAME elemet a fürt nevére. Amikor a rendszer kéri, adja meg az SSH-felhasználói fiók jelszavát.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Csatlakozzon a HiveServer2-höz a Beeline-ügyféllel a megnyitott SSH-munkamenetből a következő paranccsal:

    beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
    

    Megjegyzés

    Tekintse meg a Csatlakozás a HiveServer2-hez a Beeline használatával című cikk "A HDInsight Enterprise Security Package-fürthöz (ESP-fürt Kerberos használatával) című szakaszát , vagy telepítse a Beeline-t helyileg a helyi csatlakozáshoz , ha enterprise security package (ESP) kompatibilis fürtöt használ

  3. A Beeline-parancsok karakterrel ! kezdődnek, például !help megjeleníti a súgót. ! Egyes parancsok esetében azonban kihagyható a paraméter. Például működik help is.

    Van !sql, amely HiveQL-utasítások végrehajtására szolgál. A HiveQL-t azonban olyan gyakran használják, hogy kihagyhatja az előzőt !sql. A következő két utasítás egyenértékű:

    !sql show tables;
    show tables;
    

    Egy új fürtön csak egy tábla van felsorolva: hivesampletable.

  4. A következő paranccsal jelenítse meg a hivesampletable sémáját:

    describe hivesampletable;
    

    Ez a parancs a következő információkat adja vissza:

    +-----------------------+------------+----------+--+
    |       col_name        | data_type  | comment  |
    +-----------------------+------------+----------+--+
    | clientid              | string     |          |
    | querytime             | string     |          |
    | market                | string     |          |
    | deviceplatform        | string     |          |
    | devicemake            | string     |          |
    | devicemodel           | string     |          |
    | state                 | string     |          |
    | country               | string     |          |
    | querydwelltime        | double     |          |
    | sessionid             | bigint     |          |
    | sessionpagevieworder  | bigint     |          |
    +-----------------------+------------+----------+--+
    

    Ez az információ a tábla oszlopait ismerteti.

  5. Adja meg a következő utasításokat a log4jLogs nevű tábla létrehozásához a HDInsight-fürthöz biztosított mintaadatok használatával: (Szükség szerint módosítsa az URI-séma alapján.)

    DROP TABLE log4jLogs;
    CREATE EXTERNAL TABLE log4jLogs (
        t1 string,
        t2 string,
        t3 string,
        t4 string,
        t5 string,
        t6 string,
        t7 string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE LOCATION 'wasbs:///example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs
        WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log'
        GROUP BY t4;
    

    Ezek az utasítások a következő műveleteket hajtják végre:

    Utasítás Leírás
    DROP TABLE Ha a tábla létezik, az törlődik.
    KÜLSŐ TÁBLA LÉTREHOZÁSA Létrehoz egy külső táblát a Hive-ban. A külső táblák csak a Hive-ban tárolják a tábladefiníciót. Az adatok az eredeti helyen maradnak.
    SORFORMÁTUM Az adatok formázásának menete. Ebben az esetben az egyes naplók mezőit szóköz választja el egymástól.
    SZÖVEGFÁJL HELYEKÉNT TÁROLVA Az adatok tárolási helye és fájlformátuma.
    SELECT Kiválasztja az összes olyan sor számát, ahol a t4 oszlop tartalmazza a [HIBA] értéket. Ez a lekérdezés 3 értéket ad vissza, mivel három sor tartalmazza ezt az értéket.
    INPUT__FILE__NAME LIKE '%.log' A Hive megpróbálja alkalmazni a sémát a könyvtár összes fájljára. Ebben az esetben a könyvtár olyan fájlokat tartalmaz, amelyek nem felelnek meg a sémának. Az eredményekben szereplő szemétadatok elkerülése érdekében ez az utasítás arra utasítja a Hive-t, hogy csak .log végződésű fájlokból adjon vissza adatokat.

    Megjegyzés

    A külső táblákat akkor kell használni, ha arra számít, hogy a mögöttes adatokat külső forrás frissíti. Például egy automatizált adatfeltöltési folyamat vagy egy MapReduce-művelet.

    A külső táblák elvetése nem törli az adatokat, csak a tábladefiníciót.

    A parancs kimenete a következő szöveghez hasonló:

    INFO  : Tez session hasn't been created yet. Opening session
    INFO  :
    
    INFO  : Status: Running (Executing on YARN cluster with App id application_1443698635933_0001)
    
    INFO  : Map 1: -/-      Reducer 2: 0/1
    INFO  : Map 1: 0/1      Reducer 2: 0/1
    INFO  : Map 1: 0/1      Reducer 2: 0/1
    INFO  : Map 1: 0/1      Reducer 2: 0/1
    INFO  : Map 1: 0/1      Reducer 2: 0/1
    INFO  : Map 1: 0(+1)/1  Reducer 2: 0/1
    INFO  : Map 1: 0(+1)/1  Reducer 2: 0/1
    INFO  : Map 1: 1/1      Reducer 2: 0/1
    INFO  : Map 1: 1/1      Reducer 2: 0(+1)/1
    INFO  : Map 1: 1/1      Reducer 2: 1/1
    +----------+--------+--+
    |   sev    | count  |
    +----------+--------+--+
    | [ERROR]  | 3      |
    +----------+--------+--+
    1 row selected (47.351 seconds)
    
  6. Kilépés a Beeline-ból:

    !exit
    

HiveQL-fájl futtatása

Ez a példa az előző példa folytatása. Az alábbi lépésekkel hozzon létre egy fájlt, majd futtassa azt a Beeline használatával.

  1. Az alábbi paranccsal hozzon létre egy query.hql nevű fájlt:

    nano query.hql
    
  2. A fájl tartalmaként használja az alábbi szöveget. Ez a lekérdezés létrehoz egy új , errorLogs nevű belső táblát:

    CREATE TABLE IF NOT EXISTS errorLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) STORED AS ORC;
    INSERT OVERWRITE TABLE errorLogs SELECT t1, t2, t3, t4, t5, t6, t7 FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log';
    

    Ezek az utasítások a következő műveleteket hajtják végre:

    Utasítás Leírás
    TÁBLA LÉTREHOZÁSA, HA NEM LÉTEZIK Ha a tábla még nem létezik, akkor létrejön. Mivel az EXTERNAL kulcsszó nincs használatban, ez az utasítás létrehoz egy belső táblát. A belső táblák tárolása a Hive-adattárházban történik, és a Hive teljes mértékben kezeli.
    ORC-KÉNT TÁROLVA Az adatokat optimalizált soroszlopos (ORC) formátumban tárolja. Az ORC formátum egy rendkívül optimalizált és hatékony formátum Hive-adatok tárolására.
    FELÜLÍRÁS BESZÚRÁSA ... VÁLASSZA KI Kijelöli a log4jLogs táblából az [ERROR] elemet tartalmazó sorokat, majd beszúrja az adatokat az errorLogs táblába.

    Megjegyzés

    A külső tábláktól eltérően a belső táblák elvetése a mögöttes adatokat is törli.

  3. A fájl mentéséhez használja a CtrlXbillentyűkombinációt+, majd írja be az Y, végül az Enter billentyűt.

  4. Futtassa a fájlt a Beeline használatával az alábbi paranccsal:

    beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http' -i query.hql
    

    Megjegyzés

    A -i paraméter elindítja a Beeline-t, és a fájlban futtatja az query.hql utasításokat. Miután a lekérdezés befejeződött, megérkezik a jdbc:hive2://headnodehost:10001/> kérdésre. A paraméterrel -f is futtathat fájlt, amely a lekérdezés befejezése után kilép a Beeline-ból.

  5. Az errorLogs tábla létrehozásának ellenőrzéséhez használja a következő utasítást az errorLogs összes sorának visszaadásához:

    SELECT * from errorLogs;
    

    Három sornyi adatot kell visszaadni, amelyek mindegyike [ERROR] értéket tartalmaz a t4 oszlopban:

    +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
    | errorlogs.t1  | errorlogs.t2  | errorlogs.t3  | errorlogs.t4  | errorlogs.t5  | errorlogs.t6  | errorlogs.t7  |
    +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
    | 2012-02-03    | 18:35:34      | SampleClass0  | [ERROR]       | incorrect     | id            |               |
    | 2012-02-03    | 18:55:54      | SampleClass1  | [ERROR]       | incorrect     | id            |               |
    | 2012-02-03    | 19:25:27      | SampleClass4  | [ERROR]       | incorrect     | id            |               |
    +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+
    3 rows selected (0.813 seconds)
    

Következő lépések