Статьи

Детализация больших данных — запрос и анализ данных

В предыдущей статье мы обсудили Spark для больших данных и показали, как настроить их в Alibaba Cloud.

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

«Наша способность делать большие вещи с помощью данных будет иметь реальное значение во всех аспектах нашей жизни», Дженнифер Палка

Существуют разные способы выполнения операций MapReduce. Первый — это традиционный подход, в котором мы используем программу Java MapReduce для всех типов данных. Второй подход — это использование сценариев для MapReduce для обработки структурированных и полуструктурированных данных. Такой подход достигается с помощью Pig. Затем идет Hive Query Language, HiveQL или HQL, для MapReduce для обработки структурированных данных. Это достигается Улей.


Вам также может понравиться: 
Пример приложения ETL с использованием Apache Spark и Hive

Чехол для улья

Как уже говорилось в нашей предыдущей статье, Hadoop представляет собой обширный набор инструментов и технологий, и на данный момент удобнее развертывать Hive и Pig. У Hive есть свои преимущества перед Pig, тем более что он может упростить создание отчетов и анализ данных с помощью хранилищ.

Hive построен на основе Hadoop и используется для запросов и анализа данных, хранящихся в HDFS. Это инструмент, который помогает программистам анализировать большие наборы данных и легко получать к ним доступ с помощью языка запросов HiveQL. Этот язык внутренне преобразует SQL-подобные запросы в задания MapReduce для его развертывания в Hadoop.

У нас также есть Impala с этой точки зрения, что довольно часто встречается вместе с Hive, но если вы смотрите внимательно, у Hive есть свое место на рынке, и, следовательно, он также имеет лучшую поддержку. Impala — это также механизм запросов, построенный на основе Hadoop. Он использует существующий Hive, так как многие пользователи Hadoop уже используют его для выполнения пакетных задач.

Основная цель Impala — выполнять быстрые и эффективные операции через SQL. Интеграция Hive с Impala дает пользователям преимущество в использовании Hive или Impala для обработки или создания таблиц. Impala использует язык ImpalaQL, который является подмножеством HiveQL. В этой статье мы сосредоточимся на Hive.

Особенности Улья

  • Hive предназначен для управления и запроса только структурированных данных.
  • Работая с этими структурированными данными, Map Reduce не имеет функций оптимизации, таких как UDF, но Hive Framework может помочь вам лучше с точки зрения оптимизации.
  • Сложность программирования Map Reduce можно уменьшить с помощью Hive, поскольку он использует HQL вместо Java. Следовательно, концепции похожи на SQL.
  • Hive использует разбиение для повышения производительности по определенным запросам.
  • Важным компонентом Hive является Metastore, который находится в реляционной базе данных.

Hive и реляционные базы данных

Реляционные базы данных представляют собой «Схема на чтение и Схема на запись», где могут выполняться такие функции, как вставки, обновления и модификации. Заимствовав концепцию «пиши один раз прочитал много (WORM)», Hive был разработан на основе «Схема только для чтения». Типичный запрос Hive выполняется на нескольких узлах данных, и поэтому было сложно обновлять и изменять данные на нескольких узлах. Но это было решено в последних версиях Hive.

Форматы файлов

Hive поддерживает различные форматы файлов, такие как плоские файлы или текстовые файлы, файлы SequenceFiles, RC и ORC, файлы Avro, паркет и пользовательские форматы ввода и вывода. Текстовый файл является форматом файла Hive по умолчанию.

Варианты хранения в Hive

  • Metastore : Metastore — это основной компонент, который отслеживает все метаданные базы данных, таблиц, типов данных и т. Д.
  • Таблицы : в Hive есть два разных типа таблиц. Это обычные таблицы и внешние таблицы. Обе они похожи на обычные таблицы в базе данных, но слово EXTERNAL позволяет вам создать таблицу и указать LOCATION, чтобы Hive не использовал местоположение по умолчанию. Другое отличие состоит в том, что при удалении внешней таблицы данные все еще хранятся в HDFS. С другой стороны, данные в обычной таблице удаляются при удалении таблицы.
  • Разделы : Разделение — это разделение таблиц, которые хранятся в разных подкаталогах внутри каталога таблицы. Это помогает повысить производительность запросов, особенно в таких случаях, как операторы select с предложением «WHERE».
  • Buckets : Buckets — это хэшированные разделы, которые помогают ускорить соединение и выборку данных. Чтобы реализовать эту концепцию группирования в Hive, используйте кластеризацию по команде при создании таблицы. Каждое ведро будет храниться в виде файла в каталоге таблицы. Во время создания таблицы исправьте количество сегментов. На основании значения хеш-функции данные будут распределены по различным сегментам.

Улей СерДе

Сериализатор / десериализатор в Hive или Hive SerDe используется для целей ввода-вывода, которые могут обрабатывать как сериализацию, так и десериализацию в Hive. Существуют различные типы SerDe, такие как нативный SerDe и пользовательский SerDe, с помощью которого вы можете создавать таблицы. Если ФОРМАТ ROW не указан, используйте родной SerDe. Помимо различных типов SerDe, мы также можем написать свой собственный SerDe для наших собственных форматов данных. На этом начальном этапе мы просто познакомимся с этой концепцией, поскольку важно сосредоточиться на Hive.

Чтобы вспомнить, какой бы файл вы ни записали в HDFS, он просто хранится там как файл. Здесь идет Hive, который может наложить структуру на различные форматы данных. Ниже приведены подробные сведения о запуске оболочки улья, ее использовании и некоторых базовых запросах, с которых нужно начать и понять работу Hive.

Инициирование Hive Shell

Войдите в инстанс службы Elastic Compue Service (ECS) Alibaba Cloud и просто введите «куст», после чего откроется экран, как показано ниже. Если вы настроили Hive для работы на другом рабочем узле, а не на главном, то войдите на этот конкретный хост и откройте оболочку куста.

Давайте рассмотрим некоторые основные запросы в HiveQL. Самое первое — это создание таблицы в Hive.

Синтаксис


SQL