Русские Блоги
Базовая таблица управления Hive и внешняя таблица
В грамматике Hive есть ключевое слово для создания таблицы EXTERNAL, это ключевое слово указывает тип таблицы, в Hive есть два типа таблиц: таблица управления и управляемая таблица (внешняя таблица). Если ключевое слово EXTERNAL не добавлено, все созданные таблицы являются таблицами управления.
1. Информация таблицы управления
Как проверить, является ли таблица управляемой или управляемой? Вы можете использовать команду desc:
2. Внешний стол
Затем мы создаем внешнюю таблицу.Чтобы создать внешнюю таблицу, просто добавьте ключевое слово EXTERNAL в исходный оператор создания таблицы.
Вы видите, что внешняя таблица emp_ext была успешно создана, давайте посмотрим на подробное описание таблицы:
3. Разница между таблицами управления и внешними таблицами.
Так в чем же самое большое различие между внешними таблицами и таблицами управления? Для журналов веб-сайтов крупных компаний обычно существует специальный отдел для обработки журналов. После обработки журналы будут сохранены в hdfs. Например, путь сохранения следующий:
/hdfs/sitelog
20190212.txt
20190213.txt
20190214.txt
Теперь есть два бизнес-отдела: интеллектуальный анализ данных и машинное обучение. Им обоим необходимо анализировать этот журнал. Если они хранятся в кусте в виде таблицы управления, то путь к файлу на hdfs будет следующим образом:
/user/dept1/hive
20190212.txt
20190213.txt
20190214.txt
/user/dept2/hive
20190212.txt
20190213.txt
20190214.txt
Таким образом, в hdfs хранится по три копии каждого файла. Если используется таблица управления, каждый файл будет сохранен по 9 копий, что приведет к большой трате дискового пространства. В это время вам необходимо использовать характеристики внешней таблицы. При создании таблицы внешняя таблица может указывать путь к файлу данных, например / hdfs / sitelog. Если вам не нужно использовать таблицу позже, вы можете удалить таблицу, но данные не будут удалены. Таблица управления удалит данные вместе при удалении таблицы.
Различия между таблицами управления и внешними таблицами заключаются в следующем:
| Элемент сравнения | Таблица управления | Внешний стол |
|---|---|---|
| Тип стола | MANAGED_TABLE | EXTERNAL_TABLE |
| место хранения | По умолчанию хранится в / пользователь / улей / склад или может быть указан по местоположению | Вы можете указать расположение каталога при создании таблицы |
| Удалить таблицу | Данные и метаданные таблицы будут удалены при удалении таблицы. | При удалении таблицы будут удалены только метаданные, но не данные таблицы |
4. Создайте внешнюю таблицу.
Мы создаем внешнюю таблицу, указав путь hdfs, а затем загружаем данные без загрузки.
Не имеет значения, если каталог, указанный в расположении, не существует, но родительский каталог должен иметь права доступа, иначе будет сообщено об ошибке. Создайте каталог и поместите данные в каталог ниже:
Затем мы запрашиваем таблицу:
Вы можете видеть, что данные были загружены, но мы не загрузили данные, поэтому, пока файл данных находится в соответствующем каталоге для внешней таблицы, к внешней таблице можно получить доступ в обычном режиме, что также является обычной практикой на предприятиях.
Чтобы узнать больше о больших данных, подпишитесь на публичный аккаунт WeChat: большие данные и искусственный интеллект для начинающих.
Отсканируйте QR-код ниже, чтобы следовать:
Managed vs. External Tables
Hive fundamentally knows two different types of tables:
Introduction
This document lists some of the differences between the two but the fundamental difference is that Hive assumes that it owns the data for managed tables. That means that the data, its properties and data layout will and can only be changed via Hive command. The data still lives in a normal file system and nothing is stopping you from changing it without telling Hive about it. If you do though it violates invariants and expectations of Hive and you might see undefined behavior.
Another consequence is that data is attached to the Hive entities. So, whenever you change an entity (e.g. drop a table) the data is also changed (in this case the data is deleted). This is very much like with traditional RDBMS where you would also not manage the data files on your own but use a SQL-based access to do so.
For external tables Hive assumes that it does not manage the data.
Managed or external tables can be identified using the DESCRIBE FORMATTED table_name command, which will display either MANAGED_TABLE or EXTERNAL_TABLE depending on table type.
Statistics can be managed on internal and external tables and partitions for query optimization.
Feature comparison
This means that there are lots of features which are only available for one of the two table types but not the other. This is an incomplete list of things:
Managed tables
Use managed tables when Hive should manage the lifecycle of the table, or when generating temporary tables.
External tables
An external table describes the metadata / schema on external files. External table files can be accessed and managed by processes outside of Hive. External tables can access data stored in sources such as Azure Storage Volumes (ASV) or remote HDFS locations. If the structure or partitioning of an external table is changed, an MSCK REPAIR TABLE table_name statement can be used to refresh metadata information.
Use external tables when files are already present or in remote locations, and the files should remain even if the table is dropped.
Big Data от A до Я. Часть 5.1: Hive — SQL-движок над MapReduce
Привет, Хабр! Мы продолжаем наш цикл статьей, посвященный инструментам и методам анализа данных. Следующие 2 статьи нашего цикла будут посвящены Hive — инструменту для любителей SQL. В предыдущих статьях мы рассматривали парадигму MapReduce, и приемы и стратегии работы с ней. Возможно многим читателям некоторые решения задач при помощи MapReduce показались несколько громоздкими. Действительно, спустя почти 50 лет после изобретения SQL, кажется довольно странным писать больше одной строчки кода для решения задач вроде «посчитай мне сумму транзакций в разбивке по регионам».
С другой стороны, классические СУБД, такие как Postgres, MySQL или Oracle не имеют такой гибкости в масштабировании при обработке больших массивов данных и при достижении объема большего дальнейшая поддержка становится большой головоной болью.
Собственно, Apache Hive был придуман для того чтобы объединить два этих достоинства:
Общее описание
Hive появился в недрах компании Facebook в 2007 году, а через год исходники hive были открыты и переданы под управление apache software foundation. Изначально hive представлял собой набор скриптов поверх hadoop streaming (см 2-ю статью нашего цикла), позже развился в полноценный фреймворк для выполнения запросов к данным поверх MapReduce.
Актуальная версия apache hive(2.0) представляет собой продвинутый фреймворк, который может работать не только поверх фреймворка Map/Reduce, но и поверх Spark(про спарк у нас будут отдельные статьи в цикле), а также Apache Tez.
Apache hive используют в production такие компании как Facebook, Grooveshark, Last.Fm и многие другие. Мы в Data-Centric alliance используем HIve в качестве основного хранилища логов нашей рекламной платформы.
Архитектура
Hive представляет из себя движок, который превращает SQL-запросы в цепочки map-reduce задач. Движок включает в себя такие компоненты, как Parser(разбирает входящие SQL-запрсоы), Optimimer(оптимизирует