Тази статия описва как да използвате клиента на Apache Beeline от командния ред за създаване и изпълнение на заявки на Apache Hive през SSH връзка.

azure

Заден план

Beeline е клиент на Hive, който е включен в главните възли на вашия клъстер HDInsight. За да се свържете с клиента на Beeline, инсталиран на вашия клъстер HDInsight, или да инсталирате Beeline локално, вижте Свързване или инсталиране на Apache Beeline. Beeline използва JDBC, за да се свърже с HiveServer2, услуга, хоствана на вашия клъстер HDInsight. Можете също да използвате Beeline за отдалечен достъп до Hive на HDInsight през интернет. Следващите примери предоставят най-често срещаните низове за свързване, използвани за свързване към HDInsight от Beeline.

Предпоставки за примери

Забележете схемата URI за основното хранилище на вашия клъстер. Например wasb: // за Azure Storage, abfs: // за Azure Data Lake Storage Gen2 или adl: // за Azure Data Lake Storage Gen1. Ако за Azure Storage е активиран защитен трансфер, URI е wasbs: //. За повече информация вижте защитен трансфер.

SSH клиент. За повече информация вижте Свързване с HDInsight (Apache Hadoop) чрез SSH. Повечето стъпки в този документ предполагат, че използвате Beeline от SSH сесия към клъстера. Можете също да използвате локален клиент на Beeline, но тези стъпки не са разгледани в тази статия.

Изпълнете заявка за кошер

Този пример се основава на използването на клиента на Beeline от SSH връзка.

Отворете SSH връзка към клъстера с кода по-долу. Заменете sshuser с потребителя на SSH за вашия клъстер и заменете CLUSTERNAME с името на вашия клъстер. Когато бъдете подканени, въведете паролата за потребителския акаунт на SSH.

Свържете се с HiveServer2 с вашия клиент на Beeline от вашата отворена SSH сесия, като въведете следната команда:

Командите на Beeline започват с a! символ, например! help показва помощ. Както и да е ! може да се пропусне за някои команди. Например помощта също работи.

Има! Sql, който се използва за изпълнение на HiveQL изрази. HiveQL обаче се използва толкова често, че можете да пропуснете предходния! Sql. Следните две твърдения са еквивалентни:

В нов клъстер е посочена само една таблица: копривна проба.

Използвайте следната команда, за да покажете схемата за hivesampletable:

Тази команда връща следната информация:

Тази информация описва колоните в таблицата.

Въведете следните изрази, за да създадете таблица с име log4jLogs чрез използване на примерни данни, предоставени с клъстера HDInsight: (Преработете при необходимост въз основа на вашата URI схема.)

Тези изявления извършват следните действия:

Изявление Описание
ТАБЛИЦА ЗА ПАДАНЕ Ако таблицата съществува, тя се изтрива.
СЪЗДАЙТЕ ВЪНШНА МАСА Създава външен маса в Кошера. Външните таблици съхраняват само дефиницията на таблицата в Hive. Данните са оставени на оригиналното място.
РЕДЕН ФОРМАТ Как се форматират данните. В този случай полетата във всеки дневник са разделени с интервал.
СЪХРАНЕНО КАТО ТЕКСТИЛНО МЕСТОПОЛОЖЕНИЕ Къде се съхраняват данните и в какъв файлов формат.
ИЗБЕРЕТЕ Избира брой на всички редове, където колона t4 съдържа стойността [ГРЕШКА]. Тази заявка връща стойност от 3 тъй като има три реда, които съдържат тази стойност.
INPUT__FILE__NAME КАТО „% .log“ Hive се опитва да приложи схемата към всички файлове в директорията. В този случай директорията съдържа файлове, които не съответстват на схемата. За да предотврати данните за боклука в резултатите, това изявление казва на Hive, че трябва да връща данни само от файлове, завършващи на .log.

Външни таблици трябва да се използват, когато очаквате основните данни да бъдат актуализирани от външен източник. Например автоматичен процес на качване на данни или операция MapReduce.

Отпадането на външна таблица го прави не изтрийте данните, само дефиницията на таблицата.

Резултатът от тази команда е подобен на следния текст:

Стартирайте HiveQL файл

Този пример е продължение на предишния пример. Използвайте следните стъпки, за да създадете файл, след което го стартирайте с помощта на Beeline.

Използвайте следната команда, за да създадете файл с име query.hql:

Използвайте следния текст като съдържание на файла. Тази заявка създава нова „вътрешна“ таблица с име errorLogs:

Тези изявления извършват следните действия:

Изявление Описание
СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА Ако таблицата вече не съществува, тя е създадена. Тъй като ВЪНШЕН ключова дума не се използва, този израз създава вътрешна таблица. Вътрешните таблици се съхраняват в хранилището за данни на Hive и се управляват изцяло от Hive.
СЪХРАНЕНО КАТО ORC Съхранява данните във формат Optimized Row Columnar (ORC). ORC форматът е силно оптимизиран и ефективен формат за съхраняване на данни от Hive.
ВМЪКНЕТЕ ЗАПИШЕТЕ. ИЗБЕРЕТЕ Избира редове от log4jLogs таблица, която съдържа [ГРЕШКА], след това вмъква данните в errorLogs маса.

За разлика от външните таблици, отпадането на вътрешна таблица също изтрива основните данни.

За да запазите файла, използвайте Ctrl+х, след това влезте Y., и накрая Въведете.

Използвайте следното, за да стартирате файла с помощта на Beeline:

Параметърът -i стартира Beeline и изпълнява операторите във файла query.hql. След като заявката завърши, стигате до подкана jdbc: hive2: // headnodehost: 10001 />. Можете също да стартирате файл с помощта на параметъра -f, който излиза от Beeline след завършване на заявката.

За да проверите дали errorLogs таблицата е създадена, използвайте следния оператор, за да върнете всички редове от errorLogs:

Трябва да се върнат три реда данни, всички съдържащи [ГРЕШКА] в колона t4:

Следващи стъпки

За по-обща информация относно Hive в HDInsight, вижте Използване на Apache Hive с Apache Hadoop на HDInsight

За повече информация относно други начини, по които можете да работите с Hadoop на HDInsight, вижте Използване на MapReduce с Apache Hadoop на HDInsight