У меня есть большая таблица Hive со столбцом Id
, и я хочу разбить эту таблицу на несколько таблиц, основываясь на значениях столбца Id
.То есть каждая из этих меньших таблиц будет иметь одинаковое значение в столбце Id
Исходная таблица:
|----|-------|
| Id | Value |
|----|-------|
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 3 | 5 |
|----|-------|
Подтаблицы:
|----|-------|
| Id | Value |
|----|-------|
| 1 | 2 |
| 1 | 3 |
|----|-------|
|----|-------|
| Id | Value |
|----|-------|
| 2 | 4 |
|----|-------|
|----|-------|
| Id | Value |
|----|-------|
| 3 | 5 |
|----|-------|
В настоящее время я использую цикл в исходной таблице для фильтрации значений Id и записи отфильтрованного вывода в новую таблицу для каждого значения Id.
Однако это оказывается крайне неэффективным, поскольку существует большое количество идентификаторов, и Hive должен запускать и запускать задачу MapReduce для каждого фильтра на идентификаторе
. Моими непосредственными мыслями было сохранение оригинала.таблица разбита на столбец Id
, так что это может ускорить фильтр на Id
позже.
Есть ли более эффективный способ сделать что-то подобное?