Cloudera Imapala: Руководство начинающего / Cloudera Imapala: Tutorials for Getting Started: Advanced Tutorials: Attaching an External Partitioned Table to an HDFS Directory Structure

Английский оригинал Перевод на русский

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

Подключение внешней партиционированной таблицы к дереву каталогов HDFS

nipman 18.07.14 в 14:58

0

Данное руководство показывает как можно настроить структуру папок HDFS, распределив файлы данных по поддиректориям и подключить внешнюю таблицу Impala что бы делать запросы к данным находящимся в изначальном месте.

nipman 18.07.14 в 15:20

0

В данном руководстве рассматривается таблица, содержащая логи web-сервера, которые распределены по папкам с учетом года, месяца, дня и сервера. Для простоты приводится немного данных в CSV формате, загруженных в каждую партицию.

nipman 18.07.14 в 15:41

0

Первым делом создадим партиционированную таблицу для CSV данных и посмотрим на получившуюся структуру каталогов в HDFS. Колонки field1, field2 и field3 соответствуют содержимому CSV файлов с данными. Колонки year, month, day и host представлены в виде имен подпапок и отсутствуют в CSV файлах. Используя тип STRING обеспечивается консистентность имен подпапок, а ведущими нолями неизменность длины имени.

nipman 18.07.14 в 16:59

0

Вернемся в командную строку linux и проверим структуру каталогов HDFS. (В вашем случае расположение рабочей папки Impala может отличаться, по историческим причином она часто располагается в /user/hive/warehouse). Воспользуемся командой hdfs dfs -ls что бы посмотреть подпапки, относящиеся к кажой подпапке. Добравшись до последней папки и воспользовавшись командой hdfs dfs -cat для просмотра содержимого файла, мы увидим данные в CSV формате, ставшие результатом выполнения INSERT.

nipman 19.07.14 в 08:41

0

Не покидая командной строки Linux, выполним hdfs dfs -mkdir для создания нескольких папок на HDFS с данным за пределами рабочей папки Impala (расположение может отличаться, в нашем случае это /user/impala/warehouse). В зависимости от настроек, возможно придется авторизоваться под пользоватлем, обладающим правами на запись в этой папке HDFS; Ниже приведен пример команд, которые нужно выполнить с правами такого пользователя.

nipman 19.07.14 в 08:46

0

Мы создаем небольшой CSV файл, с данными отличными от тех что были добавлены с помощью INSERT. Создадим копии этого файла во всех подпапках, использующихся для партиционирования.

nipman 19.07.14 в 08:48

0

Снова запустив интерпретатор impala-shell, переместив таблицу контролируемую Impala и с помощью оператора LOCATION создадим новую внешнюю таблицу, указывающую на на только что созданную папку, содержащую папки с данными.

nipman 19.07.14 в 08:51

0

Так как подпапки-партиции были добавлены после содания таблицы, для того что бы они данные в них доступны Impala, каждую из них необходимо идентифицировать помощью ALTER TABLE.

nipman 19.07.14 в 09:09

0

Используем выражение REFRESH каждый раз когда была добавлена, изменана или удалена хотя бы одна из партиций. Данные готовы для выполнения запросов. Выражение SELECT * показывает, что рновые данные успешно распознаны в каждой из папок. Выведено всего несколько строчек так как мы воспользовались оператором LIMIT на случай если будет получено больше данных чем мы ожидаем.

nipman 19.07.14 в 09:53

0
Минутку...