Вставить значения в таблицы Hive с примитивным и сложным типом данных - PullRequest
0 голосов
/ 27 апреля 2018

Если у меня есть только одна таблица, такая как определение студента и таблицы, а схема такая, как улей>

create table student1(S_Id int,
    > S_name Varchar(100),
    > Address Struct<a:int, b:String, c:int>,
    > marks Map<String, Int>);

OK
Time taken: 0.439 seconds
hive> 

hive> Describe Student1;
OK
s_id                    int                                         
s_name                  varchar(100)                                
address                 struct<a:int,b:string,c:int>                        
marks                   map<string,int>                             
Time taken: 0.112 seconds, Fetched: 4 row(s)

Теперь я пытаюсь вставить значения в таблицу Student1, например,

hive> insert into table student1 values(1, 'Afzal', Struct(42, 'nelson Ave NY', 08309),MAP("MATH", 89)); 

Я получаю эту ошибку

FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values

Как вставить значения для одной записи за один раз? Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 27 апреля 2018

Работает при использовании оператора insert .. select. Создайте фиктивную таблицу с одной строкой или используйте существующую таблицу + добавьте limit 1. Также используйте функцию named_struct:

Демо-версия:

hive> insert into table student1 
      select 1                                                    s_id, 
             'Afzal'                                              s_name, 
             named_struct('a',42, 'b','nelson Ave NY', 'c',08309) address,
             MAP('MATH', 89)                                      marks 
        from default.dual limit 1; --this is dummy table

Loading data to table dev.student1
Table dev.student1 stats: [numFiles=1, numRows=1, totalSize=48, rawDataSize=37]
OK
Time taken: 27.175 seconds

Проверить данные:

hive> select * from student1;
OK
1       Afzal   {"a":42,"b":"nelson Ave NY","c":8309}   {"MATH":89}
Time taken: 0.125 seconds, Fetched: 1 row(s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...