Можем ли мы иметь статический и динамический раздел в одном запросе? если да то как будет создаваться папка.?

Можем ли мы добавить статический и динамический раздел в одном запросе. Если да, то как папка будет создана в соответствии с данными ниже?

  1. У нас есть данные о другой стране и ее состоянии.
  2. Мы делаем статическое разделение на страну ="США" и делаем динамическое разделение на государстве.

Как будет создана структура папок в HDFS?

1 ответ

Решение

Да. Структура папок будет создаваться иерархически в зависимости от порядка, используемого в определении таблицы. Например, если вы определили свою таблицу, используя что-то вроде этого:

CREATE TABLE your_table (
   column1 INT, 
   column2 STRING
   ...
   columnN FLOAT
)
PARTITIONED BY (country STRING, state STRING);

Вы можете определить статическое значение для страны и динамическое значение для государства. В этом случае вы заранее указываете значение для статического раздела ("US") и позволяете Hive прочитать значения столбца "state" (в каждой строке SELECT запрос) и динамически создавать папку (уникальный путь HDFS) для каждого состояния.

INSERT OVERWRITE TABLE your_partitioned_table
PARTITION (country = 'US', state)
SELECT T.column1, T.column2, ..., T.country, T.state
FROM your_table T
WHERE T.country = 'US';

Ваша структура папок HDFS будет выглядеть примерно так:

.../your_table/country=US/state=CA
...
.../your_table/country=US/state=NY

Здесь у вас есть отличное руководство по использованию динамических и статических разделов в Hive.

Другие вопросы по тегам