Можем ли мы иметь статический и динамический раздел в одном запросе? если да то как будет создаваться папка.?
Можем ли мы добавить статический и динамический раздел в одном запросе. Если да, то как папка будет создана в соответствии с данными ниже?
- У нас есть данные о другой стране и ее состоянии.
- Мы делаем статическое разделение на страну ="США" и делаем динамическое разделение на государстве.
Как будет создана структура папок в 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.