У меня есть огромный набор данных (сжатый с 1,5 ТБ), уже импортированный в HDFS. Данные разделены на 3 коллекции: пользователей, и события. Эти коллекции - это в основном папки, заполненные файлами .bz2
, каждый из которых содержит много записей в формате TAB, по одному в строке. Схемы являются следующие:Самый эффективный дизайн для этих таблиц в Hadoop Hive?
пользователи:
id: string
age: string
sex: string
изделия:
id: string
data: string (JSON format)
события:
user_id: string
event_id: string
time: bigint
item_id: string
pos: int
city: string
state: string
device: string
property: string
interaction: int
У меня есть несколько различных запросов, которые я хочу работать на этом наборе данных, большинство из них связаны присоединения события и пользователи или события и предметы на соответствующих *_id
полей (которые являются внешними ключами к указанной коллекции).
Я уже импортировал все эти данные в HDFS и создал внешние таблицы. Запросы работают, но чрезвычайно дороги. В частности, при использовании таблицы таблица, сжатые файлы .bz2
суммируются примерно до 1 ТБ. У меня очень мало опыта с Hive, но я читал о разделах, кластерах и индексах. Кажется, что с умным дизайном я могу ускорить свои запросы, особенно для присоединений.
Мой вопрос: что вы предлагаете для эффективного дизайна трех таблиц?Запросы мне нужно часто включать одну следующие операции:
- Присоединение события и пользователей
- Присоединение события и элементы
- Объединение всех трех таблиц
- Группировка или фильтрация по
age
,sex
,state
,city
, илиproperty
(не одновременно) и агрегирование - Сортировка и фильтрация по
time
и агрегирование
Я понимаю, что, возможно, не все это может быть эффективно выполнена с помощью одной конструкции, так что я готов создать если необходимо. У меня в моем кластере около 18 ТБ всего доступного пространства (я не учитываю здесь репликации Hadoop, поэтому общее пространство на самом деле меньше).
Данные являются статическими, то есть они не изменятся в будущем. Для дополнительных ссылок это Yahoo Y10 News Feed dataset.
Bonus: В идеале, если данные хранятся в формате, который позже легко доступен Pig, еще лучше!
Я не думаю, что тег «реляционная база данных» здесь постоянный! – 54l3d
Хорошо, отредактировано. Спасибо за ваш ответ. Я читаю об этом сейчас. –