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 |
|
|
Данное руководство показывает как можно настроить структуру папок HDFS, распределив файлы данных по поддиректориям и подключить внешнюю таблицу Impala что бы делать запросы к данным находящимся в изначальном месте. nipman 18.07.14 в 15:20 |
||
|
В данном руководстве рассматривается таблица, содержащая логи web-сервера, которые распределены по папкам с учетом года, месяца, дня и сервера. Для простоты приводится немного данных в CSV формате, загруженных в каждую партицию. nipman 18.07.14 в 15:41 |
||
|
Первым делом создадим партиционированную таблицу для CSV данных и посмотрим на получившуюся структуру каталогов в HDFS. Колонки field1, field2 и field3 соответствуют содержимому CSV файлов с данными. Колонки year, month, day и host представлены в виде имен подпапок и отсутствуют в CSV файлах. Используя тип STRING обеспечивается консистентность имен подпапок, а ведущими нолями неизменность длины имени. nipman 18.07.14 в 16:59 |
||
|
Вернемся в командную строку linux и проверим структуру каталогов HDFS. (В вашем случае расположение рабочей папки Impala может отличаться, по историческим причином она часто располагается в /user/hive/warehouse). Воспользуемся командой hdfs dfs -ls что бы посмотреть подпапки, относящиеся к кажой подпапке. Добравшись до последней папки и воспользовавшись командой hdfs dfs -cat для просмотра содержимого файла, мы увидим данные в CSV формате, ставшие результатом выполнения INSERT. nipman 19.07.14 в 08:41 |
||
|
Не покидая командной строки Linux, выполним hdfs dfs -mkdir для создания нескольких папок на HDFS с данным за пределами рабочей папки Impala (расположение может отличаться, в нашем случае это /user/impala/warehouse). В зависимости от настроек, возможно придется авторизоваться под пользоватлем, обладающим правами на запись в этой папке HDFS; Ниже приведен пример команд, которые нужно выполнить с правами такого пользователя. nipman 19.07.14 в 08:46 |
||
|
Мы создаем небольшой CSV файл, с данными отличными от тех что были добавлены с помощью INSERT. Создадим копии этого файла во всех подпапках, использующихся для партиционирования. nipman 19.07.14 в 08:48 |
||
|
Снова запустив интерпретатор impala-shell, переместив таблицу контролируемую Impala и с помощью оператора LOCATION создадим новую внешнюю таблицу, указывающую на на только что созданную папку, содержащую папки с данными. nipman 19.07.14 в 08:51 |
||
|
Так как подпапки-партиции были добавлены после содания таблицы, для того что бы они данные в них доступны Impala, каждую из них необходимо идентифицировать помощью ALTER TABLE. nipman 19.07.14 в 09:09 |
||
|
Используем выражение REFRESH каждый раз когда была добавлена, изменана или удалена хотя бы одна из партиций. Данные готовы для выполнения запросов. Выражение SELECT * показывает, что рновые данные успешно распознаны в каждой из папок. Выведено всего несколько строчек так как мы воспользовались оператором LIMIT на случай если будет получено больше данных чем мы ожидаем. nipman 19.07.14 в 09:53 |
||
