Download - Apache Hive
Hive
Лучше день потерять потом за пять минут долететьАнатолий Никулин
Что такое Hive
● Система управления большими наборами данных.
● Используется для создания выборок с помощью SQL-подобного языка (HQL)
● В качестве источников данных можно использовать структурированные и не
структурированные хранилища:
○ SQL: MySQL, PostgreSQL (обычный коннектор, ничего интересного)
○ NoSQL:
■ HBase была первой, она вдохновила людей на создание Hive
■ MongoDB MongoDB коннектор для Hadoop реализован в виде Hadoop совместимой файловой системы. Данные из Монги могут читаться и обрабатываться c помощью Hadoop MapReduce.
○ File Systems: HDFS, S3
Hive это уноквазифантазия.
● Абстракция над хранилищами данных
● Унифицирующая работу с данными
● Но на самом деле, адски облегчает работу с M/R. Это основной use-case
CREATE EXTERNAL TABLE win_bids_log (
date_field string,
request_id string,
user_ssp_id string,
dsp_id string,
win_price int
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 'hdfs://categorizer-hadoop-1:/analytical_engine/logs/';
HQL синтаксис
select dsp_id, count(dsp_id), sum(win_price) from win_bids_log group by dsp_id;
Всякие штучкиHive умеет работать:
● с текстовыми файлами (можно задать разграничительный символ)
● с сжатыми текстовыми файлами (Gzip, Bzip)
● с массивами, словарями, объединениями (union)
● имеет огромное количество встроенных функций для работы с:
○ коллекциями, датами, строками, JSON-ми
○ математические функции (округление, логарифмы корни, тригонометрия)
○ функции аггрегации (sum, min, max, avg...)
● Если всего перечисленного выше, не хватило, то можно использовать кастомные
функции а так же мэпперы и редьюсеры (python, java)
Кто использует и где
● Все кто плотно работает с Mapreduce в целом.
● Все кто плотно работает с HBase
● Все кто использует Amazon EMR
● Там, где не хочется писать M/R на Java
○ Это долго. (юнит-тесты, сборка, деплой, поддержка вендорозависимых
зависимостей)