Каковы последствия добавления столбца в существующую таблицу HIVE? - PullRequest
8 голосов
/ 21 февраля 2011

Предположим, что через пару сотен гигов после начала использования HIVE я хочу добавить столбец.Из различных статей и страниц, которые я видел, я не могу понять последствия с точки зрения

  • требуемого места на диске (двойной?)
  • блокировка (могу ли я прочитать таблицу в другомпроцессы)?
  • время (это быстро или так медленно, как изменение MysqL?)
  • базовое хранилище (нужно ли изменить все базовые файлы? Как это можно сделать с помощью RCFile?)

Бонус для тех, кто может ответить на тот же вопрос о структурах в столбце HIVE.

Ответы [ 3 ]

12 голосов
/ 23 февраля 2011

Если вы добавляете столбец в таблицу кустов, обновляется только основное метасторье.

  • Требуемое дисковое пространство не увеличивается, если вы не добавляете данные
  • Изменение может быть сделано, пока другие процессы обращаются к таблице
  • Изменение происходит очень быстро (обновляется только основное хранилище)
  • Вам не нужно изменять базовые файлы. Существующие записи имеют значение null для нового столбца

Надеюсь, это поможет.

4 голосов
/ 14 июня 2013

Команды ALTER TABLE изменяют только METADATA.Базовые данные остаются нетронутыми.Тем не менее, пользователь должен убедиться, что любое изменение не нарушает целостность данных.

Кроме того, любые изменения в METADATA применяются к метастару - который обычно является MySQL - в этом случае время отклика сопоставимо.

1 голос
/ 31 января 2012

Изменение определения изменит только способ чтения файлов, а не содержимое базовых файлов.

Если бы ваши файлы представляли собой текст с разделителями табуляции с 3 столбцами, вы могли бы создать таблицу, которая ссылается на эти файлы по схеме, такой как new_table (строка STRING), которая будет читать всю строку без разбора столбцов на основе символов табуляции.

Когда вы добавляете столбец, так как в записи больше нет разделителей, он по умолчанию будет иметь значение NULL, как упоминал Хельмут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...