Основные операции улья
Основные операции улья

Основные понятия улья

Что такое Улей

Hive: открытый исходный код Facebook для сбора статистики данных в массивных структурированных журналах.

Hive — это инструмент хранилища данных, основанный на Hadoop, который может отображать файлы структурированных данных в таблицу и предоставлять функции запросов, подобные SQL.

Суть такова: конвертировать HQL в программу MapReduce.

1) Данные, обработанные Hive, хранятся в HDFS.

2) Базовой реализацией данных анализа Hive является MapReduce.

3) Программа выполнения работает на Yarn.

Преимущества и недостатки улья

преимущество

  1. Рабочий интерфейс использует грамматику, подобную SQL, что обеспечивает возможности быстрой разработки (простой и удобный в использовании).
  2. Это позволяет избежать написания MapReduce и снижает затраты разработчиков на обучение.
  3. Задержка выполнения Hive относительно высока, поэтому Hive часто используется при анализе данных, где требования к работе в реальном времени не высоки.
  4. Преимущество Hive заключается в обработке больших данных, но у него нет преимуществ при обработке небольших данных, поскольку задержка выполнения Hive относительно высока.
  5. Hive поддерживает определяемые пользователем функции, и пользователи могут реализовывать свои собственные функции в соответствии со своими потребностями.
недостаток
  • 1. Возможности выражения Hive в Hive ограничены.

(1) Итерационные алгоритмы нельзя выразить

(2) Не силен в интеллектуальном анализе данных

  • 2. Эффективность Hive относительно низкая

(1) Задания MapReduce, автоматически создаваемые Hive, обычно недостаточно интеллектуальны.

(2) Настройка улья сложна и имеет грубую детализацию.

Основные операции улья

99% то же, что MySQL

(1) Стартовый улей

Язык кода:javascript
копировать
 bin/hive

(2) Просмотр базы данных

Язык кода:javascript
копировать
hive> show databases;

(3) Откройте базу данных по умолчанию.

Язык кода:javascript
копировать
hive> use default;

(4) Отображение таблиц в базе данных по умолчанию.

Язык кода:javascript
копировать
hive> show tables;

(5) Создайте таблицу

Язык кода:javascript
копировать
hive> create table student(id int, name string);

(6) Отображение количества таблиц в базе данных.

Язык кода:javascript
копировать
hive> show tables;

(7) Просмотр структуры таблицы

Язык кода:javascript
копировать
hive> desc student;

(8) Вставьте данные в таблицу.

Язык кода:javascript
копировать
hive> insert into student values(1000,"ss");

(9) Запрос данных в таблице

Язык кода:javascript
копировать
hive> select * from student;

(10) Выход из улья

Язык кода:javascript
копировать
hive> quit;

Часто используемые интерактивные команды Hive

1. «-e» не входит в интерактивное окно улья для выполнения операторов sql.
Язык кода:javascript
копировать
bin/hive -e "select id from student;"
2. «-f» выполняет оператор sql в скрипте.

(1) Создайте файл hivef.sql.

Язык кода:javascript
копировать
 touch hivef.sql

Запишите правильный оператор sql в файл

select *from student;

(2) Выполните оператор sql в файле.

Язык кода:javascript
копировать
bin/hive -f /opt/module/datas/hivef.sql

Типы данных улья

Основные типы данных

Типы данных улья

Типы данных Java

длина

пример

TINYINT

byte

1-байтовое целое число со знаком

20

SMALINT

short

2-байтовое целое число со знаком

20

INT

int

4-байтовое целое число со знаком

20

BIGINT

long

8-байтовое целое число со знаком

20

BOOLEAN

boolean

Логический тип, true или false

TRUE  FALSE

FLOAT

float

Число одинарной точности с плавающей запятой

3.14159

DOUBLE

double

Число двойной точности с плавающей запятой

3.14159

STRING

string

Серия персонажей. Набор символов можно указать. Вы можете использовать одинарные или двойные кавычки.

‘now is the time’ “for all good men”

TIMESTAMP

тип времени

BINARY

массив байтов

Тип String Hive эквивалентен типу varchar базы данных. Этот тип представляет собой переменную строку, но он не может объявить максимальное количество символов, которые он может хранить. Теоретически он может хранить 2 ГБ символов.

Тип данных коллекции

тип данных

описывать

грамматика Пример

STRUCT

Структура языка C аналогична,Доступ к содержимому элемента можно получить через «точечную» нотацию. Например,Если столбецтип данныхдаSTRUCT{first STRING, last STRING}, то на первый элемент можно ссылаться через поле .first.

struct()

MAP

MAP — это набор кортежей пар ключ-значение.,Доступ к данным можно получить с использованием нотации массива. Например,Если тип данных столбца — MAP,где ключ->值对да’first’->’John’и’last’->’Doe’,Затем вы можете получить последний элемент через имя поля ['last']

map()

ARRAY

Массив — это совокупность переменных одного типа и имени. Эти переменные называются элементами массива, и каждый элемент массива имеет номер, начиная с нуля. Например, если значением массива является ['Джон', 'Доу'], то на второй элемент можно ссылаться через имя массива [1].

Array()

Улей имеет три типа сложности. данныхARRAY、MAP и СТРУКТУРА. ARRAYиMAP похож на ArrayиMap в Java, а STRUCT похож на Struct в языке C. Он инкапсулирует набор именованных полей, что является сложным. данных допускает любой уровень вложенности.

Язык кода:javascript
копировать
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

Объяснение поля:
row format delimited fields terminated by ','  -- Разделитель столбцов
collection items terminated by '_'  	--MAP STRUCT и ARRAY разделитель (разделитель данных)
map keys terminated by ':'		-- Разделитель между ключом и значением в MAP
lines terminated by '\n';		-- разделитель строк
Язык кода:javascript
копировать
select friends[1],children['xiao song'],address.city from test
where name="songsong";

преобразование типов

1. Правила неявного преобразования типов следующие:

(1) Любой целочисленный тип можно неявно преобразовать в более широкий тип, например, TINYINT можно преобразовать в INT, а INT можно преобразовать в BIGINT.

(2) Все целочисленные типы и типы FLOATиSTRING могут быть неявно преобразованы в DOUBLE.

(3) TINYINT, SMALLINT и INT можно преобразовать в FLOAT.

(4) Тип BOOLEAN нельзя преобразовать в любой другой тип.

2. Преобразование типа данных можно выполнить с помощью дисплея операции CAST.

Например, CAST('1' AS INT) преобразует строку '1' в целое число 1; если принудительное преобразование типа не удалось, например, при выполнении CAST('X' AS INT), выражение возвращает нулевое значение NULL.

Определение данных DDL

Создать таблицу

грамматика
Язык кода:javascript
копировать
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
[CLUSTERED BY (col_name, col_name, ...) 
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
Язык кода:javascript
копировать
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

Объяснение поля:

Поля с разделителями формата строки, оканчивающиеся символом ',' -- разделитель столбца

collection items terminated by '_'   --MAP STRUCT и ARRAY разделитель (разделитель данных)

ключи карты оканчиваются знаком ':' — разделителем между ключом и значением в MAP.

строки, заканчивающиеся '\n' — разделителем строк;

Определение данных DML

Импорт данных

Загрузить данные в таблицу (Загрузить)

1.грамматика

Язык кода:javascript
копировать
hive> load data [local] inpath '/opt/module/datas/student.txt' overwrite into | into table student [partition (partcol1=val1,…)];

(1) данные загрузки: означает загрузку данных

(2) локальный: означает загрузку данных из локальной таблицы в таблицу куста, в противном случае — загрузку данных из HDFS в таблицу куста;

(3) inpath: указывает путь для загрузки данных.

(4) перезаписать: означает перезапись существующих данных в таблице, в противном случае это означает добавление

(5) в таблицу: указывает, какую таблицу загрузить в

(6) ученик: представляет конкретную таблицу

(7) раздел: указывает на загрузку в указанный раздел.

сортировать

общая ситуациясортировать(Order By)

Сортировать по: Глобальная сортировка, Редуктор

ASC (по возрастанию): порядок возрастания (по умолчанию).

DESC (по убыванию): в порядке убывания.

каждыйReduceвнутреннийсортировать(Sort By)

В каждое сокращение могут быть включены только разделы, поэтому Распространяйте при совместном использовании.

Разделсортировать(Distribute By)

Распределить по: аналогично разделению в MR, разделение выполняется и используется в сочетании с сортировкой по.

Обратите внимание, что Hive требует, чтобы инструкция DISTRIBUTE BY была написана перед инструкцией SORT BY.

При тестировании распределения по вы должны выделить для обработки несколько редьюсеров, иначе вы не сможете увидеть эффект от распределения.

Вам также необходимо установить параметр, значение по умолчанию — -1.

Установите настройки бизнес-логики

Язык кода:javascript
копировать
set mapreduce.job.reduces=3;

По разделу дептно установить эмпносортировать в разделе

Язык кода:javascript
копировать
insert overwrite local directory 
'/opt/module/datas/distribute-result' 
select * from emp distribute by deptno sort by empno desc;

Cluster By

когдараспределять byиsorts Если поля по одинаковым, вы можете использовать кластер кстати.

cluster byВ дополнение к распространению Помимо функции by, он также имеет сортировку byфункция。但дасортировать只能да升序сортировать,не может быть указаносортировать ПравилоASCилиDESC。

Язык кода:javascript
копировать
set mapreduce.job.reduces=3;
Язык кода:javascript
копировать
hive (default)> select * from emp cluster by deptno;

Эквивалент

Язык кода:javascript
копировать
hive (default)> select * from emp distribute by deptno sort by deptno;

Другие часто используемые функции запроса

Пустое поле назначения

NVL: присвойте данным значение NULL. Его формат — NVL (строка1, replace_with). Его функция заключается в том, что если строка1 равна NULL, функция NVL возвращает значение replace_with, в противном случае она возвращает значение строки1, а если оба параметра равны NULL, она возвращает NULL.

Язык кода:javascript
копировать
select nvl(comm,-1) from emp;
Язык кода:javascript
копировать
select nvl(comm,deptid) from emp;

CASE WHEN

Язык кода:javascript
копировать
select 
  dept_id,
  sum(case sex when 'мужской' then 1 else 0 end) male_count,
  sum(case sex when 'женский' then 1 else 0 end) female_count
from 
  emp_sex
group by
  dept_id;

Столбец для строки

Соответствующее описание функции

CONCAT(строка A/столбец, строка B/столбец...): возвращает результат объединения входных строк, поддерживает любое количество входных строк;

CONCAT_WS(separator, str1, str2,...): Это особая форма КОНКАТ(). Разделитель между первым параметром и остальными параметрами. Разделителем может быть та же строка, что и остальные параметры. Если разделитель NULL, возвращаемое значение также будет НУЛЕВОЙ. Эта функция пропустит любые NULL ипустая строка。Между объединяемыми строками будут добавлены разделители.;

COLLECT_SET(col): функция принимает только основные типы данных,Его основная функция — дедупликация и суммирование значений определенного поля.,Создайте поля типа массива.

Введите данные

name

constellation

blood_type

Сунь Укун

Овен

A

море

Стрелец

A

Песня Песня

Овен

B

Чжу Бацзе

Овен

A

Сестра Фэн

Стрелец

A

Выходные данные
Язык кода:javascript
копировать
Стрелец,A            море|Сестра Фэн
Овен,A            Сунь Укун|Чжу Бацзе
Овен,B            Песня Песня
процесс
Язык кода:javascript
копировать
select
   name,
   concat(constellation, ",", blood_type) base
 from
   person_info 

Выходная таблица t1

      c_b                                         name

Язык кода:javascript
копировать
Стрелец,A            море
Стрелец,A            Сестра Фэн
Овен,A            Сунь Укун
Овен,A            Чжу Бацзе
Овен,B            Песня Песня

Кроме того, таблица выше t1

Язык кода:javascript
копировать
select c_b,COLLECT_SET(name) from t1 group by c_b;

Выходная таблица t2

Язык кода:javascript
копировать
Стрелец,A            ["море","Сестра Фэн"]
Овен,A            ["Сунь Укун","Баджие"]
Овен,B            ["Песня Песня"]

Кроме того, таблица выше t2

Язык кода:javascript
копировать
select 
   c_b,
   CONCAT_WS("|" , COLLECT_SET(name) )
from 
   t2 
   group by c_b;

Результат получен

строка в столбец

EXPLODE(col): разбить сложный массив или структуру карты в одном столбце куста на несколько строк.

LATERAL VIEW

       Пример: LATERAL VIEW udtf(expression) tableAlias ​​AS columnsAlias

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

Введите данные
Язык кода:javascript
копировать
movie	        category
«Отслеживание подозреваемых»	саспенс, боевик, научная фантастика, драма
《Lie to me》	Саспенс, полиция и грабители, боевик, психология, драма
«Воин-Волк 2»	война,действие,катастрофа
Выходные данные
Язык кода:javascript
копировать
«Отслеживание подозреваемых»      ожидание
«Отслеживание подозреваемых»      действие
«Отслеживание подозреваемых»      научная фантастика
«Отслеживание подозреваемых»      сюжет
《Lie to me》   ожидание
《Lie to me》   Полицейские и грабители
《Lie to me》   действие
《Lie to me》   психология
《Lie to me》   сюжет
«Воин-Волк 2»        война
«Воин-Волк 2»        действие
«Воин-Волк 2»        катастрофа
Создать таблицуи загрузитьданные
Язык кода:javascript
копировать
create table movie_info(
    movie string, 
    category array<string>) 
row format delimited fields terminated by "\t"
collection items terminated by ",";

load data local inpath "/opt/module/datas/movie.txt" into table movie_info;
процесс
Язык кода:javascript
копировать
select
    movie,
    category_name
from 
    movie_info 
lateral view explode(category) table_tmp as category_name;
оконная функция

1.Соответствующее описание функции

OVER(): определяет размер окна данных, в котором работает функция анализа. Размер этого окна данных может меняться при изменении строк.

ТЕКУЩАЯ СТРОКА: текущая строка

n ПРЕДЫДУЩИЙ: перейти вперед к n строкам данных

n СЛЕДУЮЩЕЕ: n строк данных в будущем

UNBOUNDED: начальная точка, UNBOUNDED PRECEDING означает начало спереди, UNBOUNDED FOLLOWING означает переход к конечной точке сзади.

LAG(col,n): n-я строка данных вперед

LEAD(col,n): n-я строка данных из следующей

NTILE(n): распределить строки в упорядоченном разделе по указанной группе данных. Каждая группа имеет номер, начиная с 1. Для каждой строки NTILE возвращает номер группы, к которой принадлежит строка. Примечание. n должен иметь тип int.

 Rank

Сортировка RANK() будет повторяться, если они одинаковы, и общее количество не изменится.

DENSE_RANK() сортировка будет повторяться, если одно и то же, и общее количество будет уменьшено.

ROW_NUMBER() будет рассчитываться в соответствии с порядком

Подвести итог

1) Эта статья так плохо написана

2) hive упрощает Mapreduce и добавляет некоторые функции hql

3) Изучение hive может оказаться таким же скучным занятием, как и изучение SQL.

4)строка в столбец、Столбец для строки、оконная функция等да重点,Суммируя,Запрос – это ключ

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 позволяет экспортировать с сохранением двух десятичных знаков.