Uruchamianie zapytań Apache Hive przy użyciu wtyczki Data Lake Tools for Visual Studio

Dowiedz się, jak używać narzędzi Data Lake dla programu Visual Studio do wykonywania zapytań w usłudze Apache Hive. Narzędzia usługi Data Lake umożliwiają łatwe tworzenie, przesyłanie i monitorowanie zapytań Hive w usłudze Apache Hadoop w usłudze Azure HDInsight.

Wymagania wstępne

Uruchamianie zapytań apache Hive przy użyciu programu Visual Studio

Masz dwie opcje umożliwiające utworzenie i uruchomienie zapytań Hive:

  • Tworzenie zapytań ad hoc.
  • Tworzenie aplikacji Hive.

Tworzenie zapytania ad hoc programu Hive

Zapytania ad hoc można wykonywać w trybie batch lub interaktywnym.

  1. Uruchom program Visual Studio i wybierz pozycję Kontynuuj bez kodu.

  2. W Eksploratorze serwera kliknij prawym przyciskiem myszy pozycję Azure, wybierz pozycję Połączenie do subskrypcji platformy Microsoft Azure... i ukończ proces logowania.

  3. Rozwiń węzeł HDInsight, kliknij prawym przyciskiem myszy klaster, w którym chcesz uruchomić zapytanie, a następnie wybierz polecenie Napisz zapytanie Hive.

  4. Wprowadź następujące zapytanie hive:

    SELECT * FROM hivesampletable;
    
  5. Wybierz polecenie Wykonaj. Tryb wykonywania jest domyślnie ustawiona na Interakcyjne.

    Execute interactive Hive query, Visual Studio.

  6. Aby uruchomić to samo zapytanie w trybie usługi Batch , przełącz listę rozwijaną z interakcyjnej na batch. Przycisk wykonywania zmienia się z Wykonaj na Prześlij.

    Submit batch Hive query, Visual Studio.

    Edytor Hive obsługuje funkcję IntelliSense. Narzędzia Data Lake Tools for Visual Studio obsługują ładowanie zdalnych metadanych podczas edycji skryptu Hive. Jeśli na przykład wpiszesz , SELECT * FROMfunkcja IntelliSense wyświetli listę wszystkich sugerowanych nazw tabel. Po określeniu nazwy tabeli funkcja IntelliSense wyświetla nazwy kolumn. Narzędzia obsługują większość instrukcji DML programu Hive, podzapytań i wbudowanych sterowników UDF. Funkcja IntelliSense zasugeruje tylko metadane klastra zaznaczonego na pasku narzędzi usługi HDInsight.

  7. Na pasku narzędzi zapytania (obszarze poniżej karty zapytania i nad tekstem zapytania) wybierz pozycję Prześlij lub wybierz strzałkę ściągnięcia obok pozycji Prześlij i wybierz pozycję Zaawansowane z listy rozwijanej. Jeśli wybierzesz tę drugą opcję,

  8. W przypadku wybrania opcji przesyłania zaawansowanego skonfiguruj nazwę zadania, argumenty, dodatkowe konfiguracje i katalog stanu w oknie dialogowym Przesyłanie skryptu. Następnie wybierz pozycję Prześlij.

    Submit Script dialog box, HDInsight Hadoop Hive query.

Tworzenie aplikacji Hive

Aby uruchomić zapytanie hive, tworząc aplikację Hive, wykonaj następujące kroki:

  1. Otwórz program Visual Studio.

  2. W oknie Start wybierz pozycję Utwórz nowy projekt.

  3. W oknie Tworzenie nowego projektu w polu Wyszukaj szablony wprowadź Hive. Następnie wybierz pozycję Aplikacja Hive i wybierz pozycję Dalej.

  4. W oknie Konfigurowanie nowego projektu wprowadź nazwę projektu, wybierz lub utwórz lokalizacjędla nowego projektu, a następnie wybierz pozycję Utwórz.

  5. Otwórz plik Script.hql utworzony za pomocą tego projektu i wklej następujące instrukcje HiveQL:

    set hive.execution.engine=tez;
    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 '/example/data/';
    SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND  INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
    

    Te instrukcje wykonują następujące czynności:

    • DROP TABLE: Usuwa tabelę, jeśli istnieje.

    • CREATE EXTERNAL TABLE: Tworzy nową tabelę "zewnętrzną" w programie Hive. Tabele zewnętrzne przechowują tylko definicję tabeli w programie Hive. (Dane pozostają w oryginalnej lokalizacji).

      Uwaga

      Tabele zewnętrzne powinny być używane w przypadku oczekiwania, że bazowe dane zostaną zaktualizowane przez źródło zewnętrzne, takie jak zadanie MapReduce lub usługa platformy Azure.

      Usunięcie tabeli zewnętrznej nie powoduje usunięcia danych, tylko definicji tabeli.

    • ROW FORMAT: informuje hive o sposobie formatowania danych. W takim przypadku pola w każdym dzienniku są oddzielone spacją.

    • STORED AS TEXTFILE LOCATION: informuje hive, że dane są przechowywane w katalogu przykładowym/danych i że są przechowywane jako tekst.

    • SELECT: wybiera liczbę wszystkich wierszy, w których kolumna t4 zawiera wartość [ERROR]. Ta instrukcja zwraca wartość 3, ponieważ trzy wiersze zawierają tę wartość.

    • INPUT__FILE__NAME LIKE '%.log': informuje hive, aby zwracał tylko dane z plików kończących się na .log. Ta klauzula ogranicza wyszukiwanie do pliku sample.log zawierającego dane.

  6. Na pasku narzędzi pliku zapytania (który ma podobny wygląd do paska narzędzi zapytania ad hoc) wybierz klaster usługi HDInsight, którego chcesz użyć dla tego zapytania. Następnie zmień wartość Interactive na Batch (w razie potrzeby) i wybierz pozycję Prześlij , aby uruchomić instrukcje jako zadanie hive.

    Zostanie wyświetlone podsumowanie zadania programu Hive i zostaną wyświetlone informacje o uruchomionym zadaniu. Użyj linku Odśwież , aby odświeżyć informacje o zadaniu, dopóki stan zadania nie zmieni się na Ukończono.

    Completed Hive job summary, Hive application, Visual Studio.

  7. Wybierz pozycję Dane wyjściowe zadania, aby wyświetlić dane wyjściowe tego zadania. Wyświetla [ERROR] 3wartość , która jest wartością zwracaną przez to zapytanie.

Dodatkowy przykład

Poniższy przykład opiera się na log4jLogs tabeli utworzonej w poprzedniej procedurze Create a Hive application (Tworzenie aplikacji Hive).

  1. W Eksploratorze serwera kliknij prawym przyciskiem myszy klaster i wybierz polecenie Napisz zapytanie Hive.

  2. Wprowadź następujące zapytanie hive:

    set hive.execution.engine=tez;
    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';
    

    Te instrukcje wykonują następujące czynności:

    • CREATE TABLE IF NOT EXISTS: Tworzy tabelę, jeśli jeszcze nie istnieje. Ponieważ słowo EXTERNAL kluczowe nie jest używane, ta instrukcja tworzy tabelę wewnętrzną. Tabele wewnętrzne są przechowywane w magazynie danych programu Hive i są zarządzane przez program Hive.

      Uwaga

      W przeciwieństwie do EXTERNAL tabel usunięcie tabeli wewnętrznej powoduje również usunięcie danych bazowych.

    • STORED AS ORC: przechowuje dane w zoptymalizowanym formacie kolumnowym wierszy (ORC). ORC to wysoce zoptymalizowany i wydajny format do przechowywania danych hive.

    • INSERT OVERWRITE ... SELECT: Wybiera wiersze z tabeli zawierającej log4jLogs[ERROR]element , a następnie wstawia dane do errorLogs tabeli.

  3. W razie potrzeby zmień wartość Interactive na Batch , a następnie wybierz pozycję Prześlij.

  4. Aby sprawdzić, czy zadanie zostało utworzone w tabeli, przejdź do Eksploratora serwera i rozwiń węzeł Azure>HDInsight. Rozwiń klaster usługi HDInsight, a następnie rozwiń węzeł Domyślne bazy danych>Hive. Zostanie wyświetlona tabela errorLogs i tabela log4jLogs.

Następne kroki

Jak widać, narzędzia usługi HDInsight dla programu Visual Studio umożliwiają łatwą pracę z zapytaniami programu Hive w usłudze HDInsight.