복붙노트

[HADOOP] 당신은 하이브 2 복합 데이터 유형 "구조체"에 데이터를 삽입하려면 어떻게

HADOOP

당신은 하이브 2 복합 데이터 유형 "구조체"에 데이터를 삽입하려면 어떻게

이 테이블의 구조

CREATE TABLE warehouse (
 time timestamp, 
 person struct<id : int, name: string, organization : string>, 
 activity struct<id : int, name: string>, 
 case struct<id : int, name: string, organization : string>
);

테이블은 문제없이 생성, 문제는 테이블에 데이터를 삽입하는 방법입니다. 나는 이런 식으로 뭔가를 시도했지만 작동하지 않습니다

INSERT INTO TABLE warehouse VALUES('2018-05-31'),
SELECT NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI') AS person,
SELECT NAMED_STRUCT('id', 1, 'name', 'Buy') AS activity,
SELECT NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') AS case
FROM case 

케이스, 활동 및 개인 테이블이 이미 존재하고 선택에 도시 된 구조를 가지고있다.

해결법

  1. ==============================

    1.당신은 (더, 당신은 값을 삽입하는 모든 UDF를 사용할 수 없습니다) 가치가있는 INSERT 문에서 NAMED_STRUCT을 사용할 수 없습니다. 이 문제를 해결하려면 작업 예이다.

    당신은 (더, 당신은 값을 삽입하는 모든 UDF를 사용할 수 없습니다) 가치가있는 INSERT 문에서 NAMED_STRUCT을 사용할 수 없습니다. 이 문제를 해결하려면 작업 예이다.

    CREATE TABLE warehouse (
     time timestamp, 
     person struct<id : int, name: string, organization : string>, 
     activity struct<id : int, name: string>, 
     `case` struct<id : int, name: string, organization : string>
    );
    
    
    INSERT INTO TABLE warehouse
    select 
    '2018-05-31',
    NAMED_STRUCT('id', 1, 'name', 'Alex', 'organization', 'CITI'),
    NAMED_STRUCT('id', 1, 'name', 'Buy'),
    NAMED_STRUCT('id', 1, 'name', 'Gold', 'organization', 'London') 
    FROM (
    select '1'
    ) t 
    ;
    
  2. from https://stackoverflow.com/questions/50631068/how-do-you-insert-data-into-complex-data-type-struct-in-hive-2 by cc-by-sa and MIT license