2016-05-10 2 views
1

Создание таблицы разделов в кусте, обязательно ли обязательно всегда указывать последний столбец для столбца раздела. Если я выбираю 1-й столбец как раздел, я не могу фильтровать данные, есть ли способ выбрать первый столбец для раздела?Взять первый столбец для рассмотрения в таблице разделов

ответ

0

В улье, если вы хотите разбить таблицу, вы должны сначала определить столбец раздела во время создания таблицы. & при заполнении данных в таблицу необходимо указать следующим образом:

«INSERT INTO partitioned_table РАЗДЕЛА (статус) ВЫБРАТЬ идентификатор, имя, статус от temp_tbl»

таким образом с помощью Вы можете создавать разделы на основе последней колонке только. если вы хотите разбить на основе первого столбца. вам нужно написать работу Mapreduce. это единственный доступный вариант.

0

Я думаю, проблема, с которой вы сталкиваетесь, заключается в том, что у вас уже есть «источник» таблицы в вашей локальной системе или hdfs, и вы хотите загрузить его в секционированную таблицу. И вы хотите, чтобы первый столбец в исходной таблице был разбит на кусты. Поскольку исходная таблица не имеет заголовков, я думаю, мы ничего не можем сделать здесь, если попытаемся напрямую загрузить файл в папку назначения куста. Единственный альтернативный способ, который я знаю, - создать не секционированную таблицу в кусте, структура которой точно такая же, как исходный файл. затем сначала загрузите исходные данные в не секционированную таблицу, а затем скопируйте данные из несетевой таблицы в секционированную таблицу. Пусть исходный файл, как это create table source(eid int, ename int, esal int) partitioned by (dept string) вашей, не распределяли таблицы, где вы загружаете данные, как это create table nopart(dept string, esal int,ename string, eid int) то вы используете динамический раздел, который по команде insert overwrite table source partition(dept) select eid,ename,esal,dept from nopart; порядок параметров является единственной точкой здесь.

Смежные вопросы