2016-12-04 1 views
0

Я прочитал известный пример о типе союза в улейкак вставить uniontype в улей

CREATE TABLE union_test(foo UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>); 
SELECT foo FROM union_test; 

{0:1} 
{1:2.0} 
{2:["three","four"]} 
{3:{"a":5,"b":"five"}} 
{2:["six","seven"]} 
{3:{"a":8,"b":"eight"}} 
{0:9} 

Ok .. большой. Что такое синтаксис в кусте sql для вставки этих строк? Я попытался вставить в значения union_test (1.0) SemanticException [Ошибка 10044]: Строка 1:12 Невозможно вставить в целевую таблицу, потому что номер столбца/типы разные «union_test»: Невозможно преобразовать столбец 0 из строки в uniontype, struct>.

С другой стороны, если я создаю одну таблицу с двойным, как я могу ее подавать с помощью таблицы union_test?

Наверняка есть наконечник. Thanks

+0

Наконец, мы использовали lib AvroParquetWriter для преобразования схемы и данных в неединичную модель. Мы пробовали несколько способов и ничего не работали без развития –

ответ

1

Считаете ли вы, что рассматривает документацию?

Прямо из Hive Language Manual UDF, в разделе «Комплексные конструкторами типа» ...

create_union (tag, val1, val2, ...)
Создает тип накидной со значением, что в настоящее время, на которую указывает параметр тега.


Хорошо, что объяснение о "параметре тега" является очень загадочным.
Например, посмотрите на нижнюю часть that blog post и/или на ответ that question on the HortonWorks forum.

+0

Хорошо, мои тесты с create_union кажутся обратными. Например, {3: {"a": 5, "b": "five"}} становится {3: {3: {"a": 5, "b": "five"}}}, когда я хочу {"a": 5, "b": "five"} –

+0

Это слава Open Source ... Теперь вы можете публиковать свои собственное сообщение в блоге, чтобы противоречить другим сообщениям в блоге **: -) ** –

+0

Наконец, мы использовали lib AvroParquetWriter для преобразования схемы и данных в неединичную модель. Мы пробовали несколько способов раньше и ничего не работаем без развития –