Вставить в представление в улье - PullRequest
0 голосов
/ 04 мая 2018

Можем ли мы вставить вид в Hive? Я делал это в прошлом с Oracle и Teradata. Но, похоже, не работает в улье.

create table t2 (id int, key string, value string, ds string, hr string);

create view v2 as select id, key, value, ds, hr from t2;

insert into v2 values (1,'key1','value1','ds1','hr1')

***Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: Unable to determine if null is encrypted: java.lang.NullPointerException***

Похоже, это какая-то поддержка обновлений. Но я не вижу ничего при вставке в представление. https://cwiki.apache.org/confluence/display/Hive/UpdatableViews

Спасибо за отзыв. Имеет смысл. Причиной необходимости в этой функциональности является то, что мы используем инструмент ETL, который имеет проблемы с обработкой десятичных знаков высокой точности (> 15 цифр). Если объект (в данном случае таблица-> столбец) представлен в инструменте как строка, у нас нет проблем. Итак, я подумал, что определю кучу представлений со строковыми типами данных и вместо этого буду использовать их в инструменте. Но не могу сделать вставки в улье для просмотра. Так что, может быть, мне нужно подумать о чем-то еще. Делали так раньше с оракулом и терадатой.

Можем ли мы иметь две таблицы с разными структурами, указывающими на одно и то же основное содержимое hdfs? Вероятно, не будет работать, потому что для хранения паркета, который хранит схему. Извините, не эксперт по hadoop.

Большое спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Ссылка (https://cwiki.apache.org/confluence/display/Hive/UpdatableViews), по-видимому, предназначена для предлагаемой функции.

Согласно официальной документации :

Views are read-only and may not be used as the target of LOAD/INSERT/ALTER. 
0 голосов
/ 04 мая 2018

Невозможно вставить данные в представление Hive, представление Hive - это просто проекция таблицы Hive (вы можете видеть это как предварительно сохраненный запрос). Из документации улья

Обратите внимание, что представление является чисто логическим объектом с , не связанным хранение . (В настоящее время нет поддержки для материализованных представлений в Улей.) Когда запрос ссылается на представление, определение представления оценивается с целью получения набора строк для дальнейшей обработки запрос. (Это концептуальное описание; на самом деле, как часть Оптимизация запросов, Hive может объединить определение представления с запрос, например проталкивание фильтров из запроса вниз в представление.)

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