Серия Hive (3) — базовое использование Hive CLI и командной строки Beeline

Apache Hive

1. Интерфейс командной строки улья

1.1 Help

использоватьhive -Hилиhive --helpКоманды могут просматривать справку для всех команд, которые отображаются следующим образом:

usage: hive
 -d,--define <key=value>          Variable subsitution to apply to hive 
                                  commands. e.g. -d A=B or --define A=B  --定义用户自定义变量
    --database <databasename>     Specify the database to use  -- 指定使用的数据库
 -e <quoted-query-string>         SQL from command line   -- 执行指定的 SQL
 -f <filename>                    SQL from files   --执行 SQL 脚本
 -H,--help                        Print help information  -- 打印帮助信息
    --hiveconf <property=value>   Use value for given property    --自定义配置
    --hivevar <key=value>         Variable subsitution to apply to hive  --自定义变量
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file  --在进入交互模式之前运行初始化脚本
 -S,--silent                      Silent mode in interactive shell    --静默模式
 -v,--verbose                     Verbose mode (echo executed SQL to the  console)  --详细模式

1.2 интерактивная командная строка

Использовать напрямуюHiveкоманду без каких-либо параметров можно ввести в интерактивную командную строку.

1.3 Выполнение команд SQL

Не входя в интерактивную командную строку, вы можете использоватьhive -eВыполнение SQL-команд.

hive -e 'select * from emp';

1.4 Выполнение сценария SQL

SQL Script для выполнения может быть в локальной файловой системе или на HDFS.

# 本地文件系统
hive -f /usr/file/simple.sql;

# HDFS文件系统
hive -f hdfs://hadoop001:8020/tmp/simple.sql;

вsimple.sqlСодержание следующее:

select * from emp;

1.5 Настройка переменных Hive

можно использовать--hiveconfУстановите переменные для среды выполнения Hive.

hive -e 'select * from emp' \
--hiveconf hive.exec.scratchdir=/tmp/hive_scratch  \
--hiveconf mapred.reduce.tasks=4;

hive.exec.scratchdir: указывает расположение каталога в HDFS для хранения планов выполнения различных этапов сопоставления/уменьшения и промежуточных выходных результатов этих этапов.

1.6 Начало профиля

использовать-iСценарий инициализации можно запустить перед входом в интерактивный режим, что эквивалентно указанию файла конфигурации для запуска.

hive -i /usr/file/hive-init.conf;

вhive-init.confСодержание следующее:

set hive.exec.mode.local.auto = true;

Значение по умолчанию для hive.exec.mode.local.auto — false, здесь установлено значение true, что означает, что локальный режим включен.

1.7 Пользовательские переменные

--define <key=value>и--hivevar <key=value>Функционально эквивалентны, используются для реализации пользовательской переменной, вот пример:

Определить переменные:

hive  --define  n=ename --hiveconf  --hivevar j=job;

Чтобы ссылаться на пользовательские переменные в запросах:

# 以下两条语句等价
hive > select ${n} from emp;
hive >  select ${hivevar:n} from emp;

# 以下两条语句等价
hive > select ${j} from emp;
hive >  select ${hivevar:j} from emp;

Результат выглядит следующим образом:

2. Билайн

2.1 HiveServer2

Hive имеет встроенные службы HiveServer и HiveServer2, обе из которых позволяют клиентам подключаться с использованием нескольких языков программирования, но HiveServer не может обрабатывать одновременные запросы от нескольких клиентов, поэтому создается HiveServer2.

HiveServer2 (HS2) позволяет удаленным клиентам отправлять запросы в Hive и получать результаты с использованием различных языков программирования, поддерживая одновременный доступ и аутентификацию для нескольких клиентов. HS2 — это единый процесс, состоящий из нескольких служб, включая службу Hive на основе Thrift (TCP или HTTP) и веб-сервер Jetty для пользовательского веб-интерфейса.

HiveServer2 имеет собственный CLI (Билайн), Билайн основан на SQLLine JDBC-клиента. Поскольку HiveServer2 направлен на разработку и обслуживание Hive (Hive0.15 после того, как hiveserver больше не поддерживается), поэтому Hive CLI больше не рекомендуется для использования, более официально рекомендованный Билайн.

2.1 Beeline

У Билайн доступно больше параметров, вы можете использоватьbeeline --helpВид, полные параметры следующие:

Usage: java org.apache.hive.cli.beeline.BeeLine
   -u <database url>               the JDBC URL to connect to
   -r                              reconnect to last saved connect url (in conjunction with !save)
   -n <username>                   the username to connect as
   -p <password>                   the password to connect as
   -d <driver class>               the driver class to use
   -i <init file>                  script file for initialization
   -e <query>                      query that should be executed
   -f <exec file>                  script file that should be executed
   -w (or) --password-file <password file>  the password file to read password from
   --hiveconf property=value       Use value for given property
   --hivevar name=value            hive variable name and value
                                   This is Hive specific settings in which variables
                                   can be set at session level and referenced in Hive
                                   commands or queries.
   --property-file=<property-file> the file to read connection properties (url, driver, user, password) from
   --color=[true/false]            control whether color is used for display
   --showHeader=[true/false]       show column names in query results
   --headerInterval=ROWS;          the interval between which heades are displayed
   --fastConnect=[true/false]      skip building table/column list for tab-completion
   --autoCommit=[true/false]       enable/disable automatic transaction commit
   --verbose=[true/false]          show verbose error messages and debug info
   --showWarnings=[true/false]     display connection warnings
   --showNestedErrs=[true/false]   display nested errors
   --numberFormat=[pattern]        format numbers using DecimalFormat pattern
   --force=[true/false]            continue running script even after errors
   --maxWidth=MAXWIDTH             the maximum width of the terminal
   --maxColumnWidth=MAXCOLWIDTH    the maximum width to use when displaying columns
   --silent=[true/false]           be more silent
   --autosave=[true/false]         automatically save preferences
   --outputformat=[table/vertical/csv2/tsv2/dsv/csv/tsv]  format mode for result display
   --incrementalBufferRows=NUMROWS the number of rows to buffer when printing rows on stdout,
                                   defaults to 1000; only applicable if --incremental=true
                                   and --outputformat=table
   --truncateTable=[true/false]    truncate table column when it exceeds length
   --delimiterForDSV=DELIMITER     specify the delimiter for delimiter-separated values output format (default: |)
   --isolation=LEVEL               set the transaction isolation level
   --nullemptystring=[true/false]  set to true to get historic behavior of printing null as empty string
   --maxHistoryRows=MAXHISTORYROWS The maximum number of rows to store beeline history.
   --convertBinaryArrayToString=[true/false]    display binary column data as string or as byte array
   --help                          display this message

2.3 Общие параметры

Параметры, поддерживаемые в Hive CLI, поддерживаются Beeline.Часто используемые параметры следующие. Дополнительные описания параметров см. в официальной документации.Beeline Command Options

параметр инструкция
-u <database URL> адрес базы данных
-n <username> имя пользователя
-p <password> пароль
-d <driver class> водитель (по желанию)
-e <query> Выполнение SQL-команд
-f <file> Выполнить SQL-скрипт
-i (or)--init <file or files> Запустите сценарий инициализации перед входом в интерактивный режим
--property-file <file> Укажите файл конфигурации
--hiveconf property*=*value Укажите свойства конфигурации
--hivevar name*=*value Определяемые пользователем атрибуты, действительные на уровне сеанса

Пример: подключение к Hive с именем пользователя и паролем

$ beeline -u jdbc:hive2://localhost:10000  -n username -p password 

3. Конфигурация улья

Вы можете настроить соответствующие атрибуты Tive через три способа соответственно следующим образом:

3.1 Профиль

Первый способ — использовать файл конфигурации, конфигурация, указанная в файле конфигурации, постоянна и эффективна. У Hive есть следующие три необязательных файла конфигурации:

  • hive-site.xml : основной файл конфигурации Hive;

  • hivemetastore-site.xml: конфигурация метаданных;

  • hiveserver2-site.xml: конфигурация HiveServer2.

Пример выглядит следующим образом, настроенным в файле hive-site.xml.hive.exec.scratchdir:

 <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/mydir</value>
    <description>Scratch space for Hive jobs</description>
  </property>

3.2 hiveconf

Второй способ запуска при загрузке командной строки (Hive CLI/Билайн) использовать--hiveconfОпределяет конфигурацию. Конфигурация, указанная таким образом, применяется ко всему сеансу.

hive --hiveconf hive.exec.scratchdir=/tmp/mydir

3.3 set

Третий способ — использовать команду set для указания в интерактивной среде (Hive CLI/Билайн). Область действия этого параметра также находится на уровне сеанса, и конфигурация вступает в силу для всех команд после выполнения команды. set имеет как функцию настройки параметров, так и функцию просмотра параметров. следующее:

0: jdbc:hive2://hadoop001:10000> set hive.exec.scratchdir=/tmp/mydir;
No rows affected (0.025 seconds)
0: jdbc:hive2://hadoop001:10000> set hive.exec.scratchdir;
+----------------------------------+--+
|               set                |
+----------------------------------+--+
| hive.exec.scratchdir=/tmp/mydir  |
+----------------------------------+--+

3.4 Настройка приоритета

Порядок приоритета конфигурации следующий (от низкого к высокому):
hive-site.xml - >hivemetastore-site.xml- > hiveserver2-site.xml - >-- hiveconf- > set

3.5 Параметры конфигурации

У Hive есть много необязательных параметров конфигурации, вы можете проверить официальную документацию, когда вам это нужно.AdminManual Configuration

использованная литература

  1. HiveServer2 Clients
  2. LanguageManual Cli
  3. AdminManual Configuration

Дополнительные статьи серии о больших данных см. в проекте с открытым исходным кодом GitHub.:Руководство для начинающих по большим данным