развертывание среды улья
развертывание среды улья

Шаг 1. Установите и разверните распределенную среду Zookeeper и Hadoop.

В этом эксперименте Hadoop 2.7.1 используется для развертывания трех платформ обработки больших данных. Как показано на рисунке 1-2.

Рисунок 1-2 Распределенная среда Hadoop

Уведомление:Версия операционной системы на каждом хосте должна быть согласованной。В процессе установкиhadoopПод пользователем,В этом учебнике пароли используются единообразно.:password(Обратите внимание на капитализацию)

Шаг 2. Разархивируйте установочные файлы.

Используйте команду tar, чтобы извлечь установочный пакет в указанный каталог и переименовать его.

[root@master ~]# cd /opt/software/

[root@master Software]# tar -zxvf apache-hive-2.0.0-bin.tar.gz -C /usr/local/src/ # Извлечь в единый каталог установки

[root@master software]# cd /usr/local/src

[root@master src]# mv /usr/local/src/apache-hive-2.0.0-bin /usr/local/src/hive

[root@master src]# chown -R hadoop:hadoop hive

Отредактируйте файл /etc/profile.

[root@master src]# cd

[root@master ~]# vi /etc/profile

Добавьте следующую информацию о конфигурации в конец файла /etc/profile.

# set Hive environment

экспорт HIVE_HOME=/usr/local/src/hive # Каталог установки Hive

Export PATH=$HIVE_HOME/bin:$PATH #Добавить каталог bin Hive

экспортировать HIVE_CONF_DIR=$HIVE_HOME/conf #переменные среды Hive

Выполните команду source /etc/profile, чтобы настроенные переменные среды вступили в силу в глобальной области системы.

[root@master ~]# source /etc/profile

Вышеуказанные команды необходимо выполнять только на том узле, где установлен Hive. В этой статье Hive развертывается на главном узле.

Экспериментальная задача вторая: установка и запуск MySQL

Шаг 1. Удалите MariaDB.

Сначала проверьте mariadb в системе

[root@master ~]# rpm -qa | grep mariadb

mariadb-libs-5.5.52-2.el7.x86_64

затем удалите

[root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

ps:

rpm -qa выводит список всех установленных пакетов

rpm -e имя_пакета удалить пакет

rpm -e --nodeps имя_пакета Принудительно удалить программное обеспечение и зависимые пакеты.

rpm -q имя пакета Запросить, установлен ли пакет

rpm -ivh имя пакета Установочный пакет

Шаг 2. Установите MySQL с помощью rpm.

Порядок установки такой:

[root@master ~]# cd /opt/software/mysql-5.7.18

[root@master mysql-5.7.18]# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm

[root@master mysql-5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm

[root@master mysql-5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm

[root@master mysql-5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm

Затем проверьте установку MySQL с помощью #rpm -qa grep mysql |

[root@master mysql-5.7.18]# vi /etc/my.cnf

#Измените существующие конфигурации и добавьте новые, если нет.

default-storage-engine=innodb

innodb_file_per_table

collation-server=utf8_general_ci

init-connect='SET NAMES utf8'

character-set-server=utf8

Запустите службу MySQL и просмотрите ее статус.

[root@master mysql-5.7.18]# systemctl start mysqld

[root@master mysql-5.7.18]# systemctl status mysqld

[root@master mysql-5.7.18]# cat /var/log/mysqld.log | grep password

Получите первоначальный пароль MySQL:

[root@master mysql-5.7.18]# mysql_secure_installation #Сбросить пароль и конфигурацию

Установленный вами пароль должен соответствовать правилам безопасностиPassword123$

Примечание. Для параметра «Разрешить удаленное подключение» установлено значение n, что означает, что удаленное подключение разрешено, остальные настройки — «y».

[root@master mysql-5.7.18]# mysql -uroot -pPassword123$

Шаг 3. Создайте нового пользователя Hive и метаданные.

Создайте в MySQL новую базу данных с именем hive_db для хранения метаданных Hive. Создайте нового пользователя куста с паролем Password123$ и предоставьте все разрешения.

mysql>create database hive_db;

mysql>create user hive identified by 'Password123$';

mysql>grant all privileges on *.* to hive@'%' identified by 'Password123$' with grant option ;

mysql>grant all privileges on *.* to 'root'@'%'identified by 'Password123$' with grant option;

mysql>flush privileges;

создать базу данных hive_db: создать новую базу данных hive_db в качестве адреса хранения метаданных Hive.

создать куст пользователя, идентифицируемый «Password123$». Создайте пользователя доступа к Hive с кустом имени пользователя и кустом паролей.

предоставить все привилегии на *.* для hive@'%', идентифицированного как 'Password123$', с опцией предоставления: предоставить разрешение 1, разрешение 2,... разрешение n на имя таблицы базы данных для имени пользователя@адрес пользователя. Предоставьте пользователю куста все разрешения для всех таблиц во всех базах данных, и любой адрес может установить соединение «%» с правами предоставления.

привилегии очистки: обновление таблиц, связанных с системными разрешениями MySQL.

Предоставьте пользователю куста все разрешения для всех таблиц во всех базах данных, и любой адрес может установить соединение «%» с правами предоставления.

Рис. 1-6. Создание пользователя Hive для работы с MySQL.

Экспериментальная задача 3. Настройка параметров Hive.

Шаг 1. Настройте hive-site.xml

Скопируйте исходный файл hive-default.xml.template и измените его на hive-site.xml. Измените значение соответствующего параметра.

[root@master ~]# su - hadoop

[hadoop@master ~]$ cp /usr/local/src/hive/conf/hive-default.xml.template /usr/local/src/hive/conf/hive-site.xml

[hadoop@master ~]$ vi /usr/local/src/hive/conf/hive-site.xml

<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/hive_db?createDatabaseIfNotExist=true</value> </property> <!--mysqlимя пользователя--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value>

</property>

<!--mysqlсерединаhiveПароль пользователя--> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>Password123$</value> </property> <!--mysqlводить машину--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>hive.downloaded.resources.dir</name> <value>/usr/local/src/hive/tmp</value> </property> <property> <name>hive.exec.local.scratchdir</name> <value>/usr/local/src/hive/tmp/${hive.session.id}_resources</value> </property> <property> <name>hive.querylog.location</name> <value>/usr/local/src/hive/tmp</value> </property> <property> <name>hive.server2.logging.operation.log.location</name> <value>/usr/local/src/hive/tmp/operation_logs</value> </property> <property> <name>hive.server2.webui.host</name> <value>master</value> </property> <property> <name>hive.server2.webui.port</name> <value>10002</value> </property> </configuration>

javax.jdo.option.ConnectionURL: строка подключения JDBC, которая по умолчанию соответствует встроенной базе данных Metastore_db. Теперь MySQL используется в качестве адреса хранения метаданных. Необходимо установить соединение JDBC, а hive_db — это база данных MySQL, созданная в эксперименте 2. для хранения метаданных.

javax.jdo.option.ConnectionUserName: Пользователь операции куста, который подключается к MySQL, созданный в эксперименте 2.

javax.jdo.option.ConnectionPassword: пароль пользователя операции куста для подключения к MySQL, созданный в эксперименте 2.

javax.jdo.option.ConnectionDriverName: Настройте драйвер подключения к базе данных.

hive.downloaded.resources.dir: временный каталог для загрузки удаленных ресурсов.

hive.server2.webui.host: адрес доступа к странице веб-интерфейса hiveserver2.

hive.server2.webui.port: порт доступа к странице веб-интерфейса hiveserver2.

Кроме того, файл конфигурации Hive по умолчанию — hive-default.xml.template. Если пользователь не изменяет соответствующие параметры конфигурации, Hive прочитает параметры файла конфигурации по умолчанию для запуска. Другая важная информация о конфигурации, такая как:

hive.metastore.warehouse.dir: каталог, в котором хранится хранилище данных конфигурации в HDFS.

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

Для получения других подробных параметров обратитесь к официальному файлу конфигурации илиhive-default.xml.templateВниз<description>Этикетка Внизописание информации,В этой статье используются параметры по умолчанию,Необходимо создать новую папку хранилища данных Hive на HDFS.,и предоставить разрешения на чтение и запись.

[hadoop@master ~]$ hadoop fs -mkdir -p /user/hive/warehouse

[hadoop@master ~]$ hadoop fs -chmod g+w /user/hive/warehouse

[hadoop@master ~]$ mkdir /usr/local/src/hive/tmp

Шаг 2. Настройте hive-env.xml.

Здесь устанавливаются переменные среды Hive и Hadoop, которые можно использовать для управления выполнением Hive.

[hadoop@master ~]$ cp /usr/local/src/hive/conf/hive-env.sh.template /usr/local/src/hive/conf/hive-env.sh

[hadoop@master ~]$ vi /usr/local/src/hive/conf/hive-env.sh

# Set JAVA

export JAVA_HOME=/usr/local/src/java

# Set HADOOP_HOME to point to a specific hadoop install directory

export HADOOP_HOME=/usr/local/src/hadoop

# Hive Configuration Directory can be controlled by:

export HIVE_CONF_DIR=/usr/local/src/hive/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:

export HIVE_AUX_JARS_PATH=/usr/local/src/hive/lib

Выйдите из сохранения, инициализируйте базу данных и убедитесь, что MySQL в это время находится в состоянии запуска, и выполните команду. Обратите внимание, что файл драйвера для Hive для подключения к MySQL необходимо загрузить в папку lib Hive. Для этой статьи выбрана версия драйвера: mysql-connector-java-5.1.26.jar.

[hadoop@master ~]$ cp /opt/software/mysql-connector-java-5.1.46.jar /usr/local/src/hive/lib/

[hadoop@master ~]$ schematool -initSchema -dbType mysql

Рисунок 1-8. Драйвер Hive подключается к MySQL.

Когда отображается сообщение «chemTool завершено», инициализация прошла успешно и Hive устанавливает соединение с MySQL. После запуска проверьте базу данных hive_db под MySQL и обнаружите, что там много новых таблиц (55).

Рисунок 1-9. Создание таблиц в базе данных Hive_db.

Шаг 3. Запустите Hive

После запуска кластера Hadoop и MySQL введите hive в поле команды.

[hadoop@master ~]$ hive

Рисунок 1-10 Страница оболочки Hive

Создайте новую таблицу и проверьте MySQL.

hive> show databases;

hive> create database hive_test_db;

hive> use hive_test_db;

hive> create table t_user(id int, name string);

hive> show tables;

Рис. 1-11. Hive создает таблицу.

Откройте базу данных MySQL и используйте базу данных hive_db, настроенную в эксперименте 2. Обратите внимание, что все таблицы, созданные hive, находятся в таблице TBLS базы данных hive_db. Когда созданная таблица существует, создается компонент Hive, хранящий метаданные на основе MySQL.

mysql> use hive_db;

mysql> select * from TBLS;

Рисунок 1-12 Проверка MySQL

Экспериментальное задание четвертое: Удаленный доступ Билайн через CLI к Hive

Шаг 1. Измените файл core-site.xml Hadoop.

Чтобы использовать интерфейс командной строки Beeline для доступа к Hive, вам необходимо предоставить разрешения прокси-пользователя Hive в кластере Hadoop.

[hadoop@master ~]$ cd /usr/local/src/hadoop/etc/hadoop

[hadoop@master hadoop]$ vi core-site.xml

[hadoop@slave1 ~]$ vi /usr/local/src/hadoop/etc/hadoop/core-site.xml

[hadoop@slave2 ~]$ vi /usr/local/src/hadoop/etc/hadoop/core-site.xml

#Добавляем следующую конфигурацию

<property>

  <name>hadoop.proxyuser.hadoop.hosts</name>

  <value>*</value>

 </property>

 <property>

  <name>hadoop.proxyuser.hadoop.groups</name>

  <value>*</value>

</property>

Примечание. Серые имена хостов, отмеченные в Hadoop.proxyuser.hadoop.hosts и Hadoop.proxyuser.hadoop.groups, представляют собой имена пользователей прокси-сервера Hadoop, к которым осуществляется доступ. После предоставления соответствующих разрешений операции доступа можно будет выполнять через службу hiveserver2. «*» — это фиксированный метод записи. Первый указывает, что все узлы в кластере Hadoop могут использовать пользователя прокси-сервера Hadoop для доступа к Hive, а второй указывает на все группы.

Запустите службу hiveserver2. Подождите некоторое время. Не закрывайте эту страницу.

[hadoop@master hadoop]$ cd

[hadoop@master ~]$ stop-all.sh

[hadoop@master ~]$ start-all.sh

[hadoop@master ~]$ hiveserver2

Рис. 1-13. Запуск службы hiveserver2.

Шаг 2. Добавьте узел удаленного доступа

Предполагая удаленный доступ к узлу подчиненных1, сначала необходимо добавить компонент Hive на узле подчиненных1 и скопировать его с главного узла.

[root@master ~]# scp -r /usr/local/src/hive root@slave1:/usr/local/src/

[root@slave1 ~]# chown -R hadoop:hadoop /usr/local/src/hive

Slavs1 настраивает переменные пользовательской среды Hadoop, вы можете использовать команды Hive.

[root@slave1 ~]# vi /etc/profile

#hive

export HIVE_HOME=/usr/local/src/hive

export HIVE_CONF_DIR=$HIVE_HOME/conf

export PATH=$HIVE_HOME/bin:$PATH

[root@slave1 ~]# su - hadoop

[hadoop@ slave1 ~]$ source /etc/profile

Шаг 3. Удаленный доступ

Вы можете управлять Hive, подключившись к Beeline через jdbc. Выполните следующую команду от имени пользователя Hadoop узла Slaves1.

[hadoop@slave1 ~]$ beeline -u jdbc:hive2://master:10000

Рисунок 1-14 Удаленное подключение других узлов

В то же время вы можете просмотреть посещенных клиентов на странице Hive WebUI. Как показано на рисунке ниже, узел 192.168.90.110 (главный) и узел 192.168.90.181 (подчиненный1) одновременно получают доступ к Hive.

Рисунок 1-15. Просмотр узлов доступа на веб-странице Hive.

Эксперимент 2. Операции с библиотекой Hive и табличные операции.

Содержание и цели эксперимента

После завершения лабораторной работы вы сможете:

  • Мастер Улейбаза данныхдействовать
  • Операции с таблицами Master Hive

Соответствующие знания

Здесь записываются инструкции Hive DDL, в том числе:

CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX

DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX

TRUNCATE TABLE

ALTER DATABASE/SCHEMA, TABLE, VIEW

MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)

SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE

DESCRIBE DATABASE/SCHEMA, table_name, view_name, materialized_view_name

Экспериментальная среда

Кластер серверов

Более 3 узлов, сетевое соединение между узлами, минимальная конфигурация каждого узла: двухъядерный процессор, 8 ГБ памяти, жесткий диск 100 ГБ.

Операционная среда

CentOS 7.2

Имя пользователя/пароль

root/password hadoop/password

Услуги и компоненты

HDFS、Yarn、MapReduce

Экспериментальный процесс

Экспериментальное задание первое: Работа библиотеки Hive

Шаг 1: Создайте базу данных

Создайте базу данных школы в Hive.

[hadoop@master ~]$ hive

hive > create database school;

Рис. 1-16. Hive создает базу данных.

Формат: CREATE (DATABASE|SCHEMA) [ЕСЛИ НЕ СУЩЕСТВУЕТ] имя_базы_данных

[COMMENT data_comment] //Описание блоков данных

[LOCATION hdfs_path] //Указываем место хранения базы данных в HDFS

  [WITH DBPROPERTIES (property_name=property_value, ...)]; 

Шаг 2. Измените базу данных и отобразите сведения о базе данных.

hive> alter database school set dbproperties('creater'='H3C');

hive> desc database extended school;

Добавьте пользовательские атрибуты, созданные H3C.

Рис. 1-17. Hive изменяет свойства базы данных.

hive> alter database school set owner user root;

hive> desc database extended school;

Измените владельца базы данных на root.

Рис. 1-18. Hive меняет владельца базы данных.

Синтаксис: desc Database [расширенное] имя_базы_данных;

Шаг 3. Удалите базу данных и отобразите все базы данных.

hive> drop database school;

hive> show databases;

Синтаксис: показать <database_name>

drop database <database_name>

Рис. 1-19 Hive удаляет базу данных и отображает ее.

Для других операций, таких как переключение баз данных, синтаксис: используйте имя_базы_данных. Удалить базу данных, содержащую таблицу. Синтаксис: удалить базу данных, если существует каскад имя_базы_данных. Проверьте, какая библиотека используется. Синтаксис: выберите current_database(). Для получения информации о других операциях обратитесь к официальной документации.

Экспериментальное задание 2: Работа стола улья

Шаг 1. Создайте таблицу.

Создайте таблицу учителей в базе данных школы, которая имеет четыре атрибута: номер работы, имя, предмет и уровень преподавания. Перед созданием вам необходимо использовать язык использования для переключения рабочей базы данных.

hive> create database school;

hive> use school;

hive> create table teacher(

> num int,

> name string,

> email map<string,int>,

> class array<string>);

Рисунок 1-20. Hive создает таблицу.

грамматика: создать [внешнюю] таблицу [если она не существует] имя_таблицы

[(col_name data_type [comment col_comment], ...)] ----Укажите имя таблицы и конкретную информацию о столбце таблицы.

[comment table_comment] ---Описательная информация таблицы.

[разделено по (имя_столбца тип_данных [комментарий_комментарий_столбца], ...)] ---Информация о разделении таблицы.

[clustered by (col_name, col_name, ...)

[сортировано по (col_name [asc|desc], ...)] в сегментах num_buckets] --- Информация о сегментах таблицы.

[формат строки row_format] ---Информация о сегментации данных и информация о форматировании таблицы.

[хранится как file_format] --- Информация о сериализации хранения данных таблицы.

[location hdfs_path] ---Информация об адресе папки хранения данных

Обычные таблицы, созданные Hive по умолчанию, называются управляемыми таблицами или внутренними таблицами. Данные таблицы единообразно управляются Hive и по умолчанию хранятся в каталоге хранилища данных. Его можно изменить с помощью файла конфигурации Hive hive-site.xml. Результаты создания можно просмотреть через веб-интерфейс Hadoop.

Рисунок 1-21 Просмотр результатов создания HDFS

Помимо внутренних таблиц по умолчанию, Hive также может создавать внешние таблицы, используя ключевое слово «EXTERNAL». Данные внешней таблицы могут храниться вне хранилища данных, либо адрес, хранящийся в HDFS, можно изменить вручную.

Таблица разделов: цель — избежать грубого сканирования.,Раздел — это независимая папка в HDFS; раздел Hive — это раздел каталога HDFS;,Столбцы таблицы, указанные при создании таблицы, не должны содержать столбцы секционирования.,Для секционирования столбцов требуются ключевые словаpartitioned byУкажите это отдельно позже。

hive> create table teacher(

> num int,

> name string,

> email map<string,int>,

> class array<string>)

> partitioned by (age int)

> row format delimited fields terminated by ",";

Таблица сегментов: таблицы или разделы можно дополнительно преобразовать в сегменты.,Это более детальное разделение данных.,Чтобы получить более высокую эффективность запроса. Разница между сегментами и разделением при хранении данных заключается в том, что,Раздел хранится в каталоге, и файлы данных хранятся в этом каталоге.,И ведро будет храниться как файл,Содержимое данных хранится в файлах. Обратите внимание, что,При создании таблицы сегментов указанный столбец сегмента необходимо создать заранее.,Используйте ключевые словаclustered byУкажите это отдельно позже,И укажите на сколько ведер разделить(buckets)。

hive> create table teacher(

> num int,

> name string,

> email map<string,int>,

> class array<string>)

> clustered by (num) into 4 buckets

> row format delimited fields terminated by ",";

Шаг 2. Просмотрите все таблицы и подробную информацию.

hive> show tables; hive> desc teacher; hive> desc formatted teacher; Синтаксис:описание <table_name>

Рис. 1-22. Подробности таблицы представления Hive.

Вы также можете скопировать существующую таблицу.

hive> create table teacher2 like teacher;

Синтаксис: создать <table_name> like <table_copy_name>;

Шаг 3. Измените таблицу.

Измените имя таблицы.

hive> alter table teacher rename to new_teacher;

Синтаксис: изменить table <table_name> rename to <new_table_name>

Измените имя столбца, тип данных, комментарий к столбцу и расположение столбца в таблице. FIRST поместит столбец в первый столбец, а AFTER имя_столбца поместит столбец на один столбец после имени_столбца. Следующий оператор изменяет имя столбца num на число, изменяет тип данных на строку, добавляет комментарий и, наконец, помещает этот столбец после имени.

hive> alter table new_teacher change num number string comment 'the num of teacher, change datatype to string ' after name;

Синтаксис: изменить table <table_name> change [cloumn] <col_old_name> <col_new_name> column_type [conmment col_conmment] [first|after column_name];

Добавление/обновление столбцов. Добавление столбцов позволяет пользователям добавлять новые столбцы в конце текущего столбца и перед столбцом раздела. Заменить столбцы позволяет пользователям обновлять столбцы. Процесс обновления заключается в том, чтобы сначала удалить текущий столбец, а затем добавить новый столбец. .

hive> alter table new_teacher add columns(age int);

Синтаксис: изменить table <table_name> add|replace columns (<col_name> data_type [conmment col_comment], ...);

Рисунок 1-23 Изменение операции

Шаг 4. Удалить таблицу и выйти

Удалить таблицу. hive> drop table teacher2; Синтаксис: отбросить table <table_name> Очистите стол. hive> truncate table new_teacher; Синтаксис: обрезать table <table_name> hive> exit;

Рисунок 1-24 Очистка данных и удаление таблиц

Эксперимент 3. Запрос Hive

Содержание и цели эксперимента

После завершения лабораторной работы вы сможете:

  • Изучите основные операции Hive Shell.
  • Изучите многотабличные запросы

Представление эксперимента

Рисунок 1-25. Выбор простой операции.

Экспериментальная среда

Кластер серверов

Более 3 узлов, сетевое соединение между узлами, минимальная конфигурация каждого узла: двухъядерный процессор, 8 ГБ памяти, жесткий диск 100 ГБ.

Операционная среда

CentOS 7.2

Имя пользователя/пароль

root/password hadoop/password

Услуги и компоненты

HDFS、Yarn、MapReduce

Экспериментальный процесс

Экспериментальное задание первое: импорт данных

Шаг 1. Вставьте один фрагмент данных и выполните запрос.

Создайте новую таблицу учащихся с номером ученика, именем, классом, информацией о росте и весе, а также оценками. Вставьте один фрагмент данных для тестирования. Вставка сложных типов требует дампа с помощью команды select. Оператор запроса соответствует оператору языка MySQL.

Синтаксис: вставить into <table_name> select <data,map(), array()>

Синтаксис: выбрать * from <table_name>;

hive> create table student(

> num int,

> name string,

> class string,

> body map<string,int>,

> exam array<string>)

> row format delimited

> fields terminated by '|'

> collection items terminated by ','

> map keys terminated by ':'

> lines terminated by '\n';

hive> create table lib(

> num int,

> book string)

> row format delimited

> fields terminated by '|'

> collection items terminated by ','

> map keys terminated by ':'

> lines terminated by '\n';

hive> create table price(

> book string,

> price int)

> row format delimited

> fields terminated by '|'

> collection items terminated by ','

> map keys terminated by ':'

> lines terminated by '\n';

hive> insert into student (num,name,class,body,exam) select 20200101,'Wlen','grade 2',map('height',175,'weight',60),array('80','70');

Рисунок 1-26. Вставьте один фрагмент информации.

Шаг 2. Пакетный импорт

Вызов операции MR во время процесса вставки данных неэффективен, а данные Hive обычно импортируются пакетами с помощью функции Load. Подготовьте данные. Данные можно хранить локально или в HDFS.

Данные хранятся в текстовом формате с символом «» между атрибутами. |”отдельный,Следует отметить, что при создании таблицы,поля должны быть установлены terminated by '|', в противном случае по умолчанию используется значение ",". Поскольку таблицы содержат сложные форматы данных, простые разделители часто теряют свою эффективность. Данные следующие:

Рисунок 1-27 Подробности импорта информации

Используйте функцию загрузки для пакетного импорта данных.

hive> load data local inpath '/opt/software/student.txt' into table student;

hive> load data local inpath '/opt/software/lib.txt' into table lib;

hive> load data local inpath '/opt/software/price.txt' into table price;

Синтаксис: загрузить data local inpath <address> [overwrite] into table < table_name>;

Если адресом хранения данных является HDFS, это эквивалентно переносу данных в HDFS.

Синтаксис: загрузить data inpath <address> [overwrite] into table <table_name>;

Рисунок 1-28 Импорт данных

Экспериментальное задание второе: выбор запроса

Шаг 1. Простой запрос

Базовый синтаксис SELECT в Hive по сути такой же, как и стандартный синтаксис SQL, и поддерживает WHERE, DISTINCT, GROUP BY, ORDER BY, HAVING, LIMIT, подзапрос и т. д., во всех системах баз данных чаще всего используется оператор SELECT; используемый и самый сложный.

Ответ: ВЫБРАТЬ [ВСЕ | РАЗЛИЧНЫЕ] select_expr, select_expr, ...

FROM table_reference

[WHERE where_condition] [GROUP BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number]

Обычные запросы точно такие же, как запросы MySQL.

hive> select * from student;

Рисунок 1-29. Выбор запроса.

Шаг 2. Условный запрос

1.где заявление

Оператор Where представляет собой логическое выражение, которое можно связать с помощью «и» и «или» для выполнения сложных запросов. Обратите внимание на то, как осуществляется поиск по специальным полям.

hive> select * from student where class = 'grade 4';

hive> select * from student where exam[0] = 96 or exam[1]=77;

hive> select * from student where body['height'] = 170;

Рисунок 1-30 Условный запрос

2. отдельные и все утверждения

Целью отличия является удаление повторяющихся элементов. Если параметры не добавлены, по умолчанию используются все. Когда отдельный параметр выполняется, MR вызывается для сортировки, что более эффективно для крупномасштабных данных.

hive> select class from student;

hive> select distinct class from student;

Рисунок 1-31 Удаление дубликатов

3. группировать и иметь утверждения

group by — это групповой запрос для столбцов, и его можно использовать для группировки byРезультаты дополнительно фильтруются。HavingиwhereРазница в том,,whereГруппировку нельзя записать позжефункция,И после этого вы можете использовать функцию группировки.

Следующий оператор сначала фильтрует и подсчитывает общее количество оценок, а затем отфильтровывает количество учащихся во втором классе или выше.

hive> select class ,count(*) from student group by class;

hive> select class ,count(*) num from student group by class having num >=2;

Где num — результат сохранения count(*).

Рисунок 1-32 Групповой запрос

Шаг 3. Объедините оператор ограничения с объединением

грамматика: Select * from <table_name> limit <up,down> select UNION [ALL | DISTINCT] select UNION [ALL | DISTINCT] select …

Ограничение ограничивает диапазон описания запроса. Если при запросе больших данных слишком много строк, запрос необходимо ограничить. Union отображает результаты нескольких выборов и может связывать несколько таблиц.

hive> select * from student limit 2,4; hive> select class from student union select num from student;

Рисунок 1-33 Запрос ограничения

Шаг 4: упорядочить сортировкой и сортировать сортировкой

Порядок по — это глобальная сортировка. Позже можно выполнить сортировку по нескольким столбцам. По умолчанию используется сортировка по словарю. Эффективность порядка очень низка для крупномасштабных наборов данных. Во многих случаях глобальная сортировка не требуется и можно использовать сортировку по. Результаты отсортированы ниже, хотя результаты те же. При обнаружении крупномасштабных данных функция сортировки по может создать файл сортировки для каждого редуктора, изменив количество редукторов. Каждый Редюсер выполняет внутреннюю сортировку, а не сортировку глобального набора результатов. Order by вызывает для расчета только один Редуктор.

hive> set mapreduce.job.reduces=3; hive> select * from student sort by exam[0]; hive> select * from student order by exam[0];

Рисунок 1-34 Сортировка

Шаг 5. ПРИСОЕДИНЯЙТЕСЬ к многотабличному запросу

Синтаксис: выбрать <clo> from <table_name> join <table_name> on <table.clo>=< table.clo > join <table_name> on <table.clo>=< table.clo >…

Соединение может соединять несколько таблиц для совместного запроса. Условия запроса должны находиться в двух последовательных таблицах, а для соединения n таблиц требуется как минимум n-1 условий соединения. Например: для объединения трех таблиц требуется как минимум два условия соединения. В этом примере есть две таблицы: таблица студентов содержит номер студента num, а таблица библиотеки содержит номер студента и название взятой напрокат книги.

hive> select * from student join lib on student.num =lib.num;

Запросите название книги, которую взял напрокат каждый человек.

Рисунок 1-35 Запрос из двух таблиц

hive> select * from student left outer join lib on student.num =lib.num;

слева присоединяйтесь, Запросите название книги, которую взял напрокат каждый человек.Отличие в том, что отображается вся информация в левой таблице.,Например: в средней школе с номерами 20200103 и 20200106 на рисунке ниже нет записей о взятии книг напрокат.,Отображается как NULL.

Рисунок 1-36 Запрос левого соединения

hive> select * from student right outer join lib on student.num =lib.num;

Левому объединению соответствует правое объединение, и отображаются все правые таблицы.

Рисунок 1-37 Запрос правого соединения

hive> select * from student full outer join lib on student.num =lib.num; Полное соединение — это комплексное использование левого и правого соединения, отображающее всю информацию из двух таблиц. Если связанного элемента нет, он будет помещен в конец и отображен как NULL.

Рисунок 1-38 Запрос полного соединения

hive> select * from student left semi join lib on student.num =lib.num;

Полуобъединение отображает только содержимое левой таблицы, то есть содержимое левой таблицы, связанное с объединенной правой таблицей.

Рисунок 1-39 Запрос полусоединения

hive> select * from student join lib on student.num =lib.num join price on lib.book=price.book;

Запрос с несколькими таблицами (более двух), например: запрос книг, взятых напрокат студентами, и цены на книги. В большинстве случаев Hive запускает задачу MapReduce для каждой пары объектов соединения jion.

Рисунок 1-40 Многотабличный запрос

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.