복붙노트

[HADOOP] 어떻게 하이브에 복잡한 데이터 형식 "구조"에 데이터를 삽입합니까

HADOOP

어떻게 하이브에 복잡한 데이터 형식 "구조"에 데이터를 삽입합니까

나는 Hive와 Stack Overflow에 완전히 익숙하다. 복잡한 데이터 형식 "STRUCT"로 테이블을 만든 다음 하이브의 INSERT INTO TABLE을 사용하여 채 웁니다.

다음 코드를 사용하고 있습니다 :

CREATE TABLE struct_test
(
 address STRUCT<
                houseno:    STRING
               ,streetname: STRING
               ,town:       STRING
               ,postcode:   STRING
               >
);

INSERT INTO TABLE struct_test
SELECT NAMED_STRUCT('123', 'GoldStreet', London', W1a9JF') AS address
FROM dummy_table
LIMIT 1;

다음 오류가 발생합니다.

성공과 비슷한 코드를 사용하여 데이터 유형 Array를 만들고 채우지 만 Struct에서 어려움을 겪고 있습니다. 나는 온라인에서 찾은 많은 코드 예제를 시도했지만 그 중 아무 것도 나를 위해 일하는 것 같지 않습니다 ... 지금은 꽤 오랫동안 그것에 갇혀 있었기 때문에 나는 이것에 대한 약간의 도움에 정말로 감사 할 것입니다! 감사.

해결법

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

    1.귀하의 SQL 오류. sql을 사용해야합니다.

    귀하의 SQL 오류. sql을 사용해야합니다.

    INSERT INTO TABLE struct_test 
           SELECT NAMED_STRUCT('houseno','123','streetname','GoldStreet', 'town','London', 'postcode','W1a9JF') AS address 
               FROM dummy_table LIMIT 1;
    
  2. ==============================

    2.복잡한 데이터 형식을 Hive에 직접 삽입 할 수 없습니다. 구조체를 삽입하려면 named_struct 함수가 있어야합니다. 원하는 테이블의 Structs 열에 삽입 할 데이터가있는 더미 테이블을 만들어야합니다. 귀하의 경우처럼 더미 테이블을 만들

    복잡한 데이터 형식을 Hive에 직접 삽입 할 수 없습니다. 구조체를 삽입하려면 named_struct 함수가 있어야합니다. 원하는 테이블의 Structs 열에 삽입 할 데이터가있는 더미 테이블을 만들어야합니다. 귀하의 경우처럼 더미 테이블을 만들

    CREATE TABLE DUMMY ( houseno:    STRING
               ,streetname: STRING
               ,town:       STRING
               ,postcode:   STRING);
    

    그런 다음 원하는 테이블에 삽입하려면 do

    INSERT INTO struct_test SELECT named_struct('houseno',houseno,'streetname'
                      ,streetname,'town',town,'postcode',postcode) from dummy;
    
  3. ==============================

    3.임의의 더미 테이블을 만들 필요가 없습니다. 그냥 command를 사용하십시오 :

    임의의 더미 테이블을 만들 필요가 없습니다. 그냥 command를 사용하십시오 :

    insert into struct_test
    select named_struct("houseno","house_number","streetname","xxxy","town","town_name","postcode","postcode_name");
    
  4. ==============================

    4.가능하다 :

    가능하다 :

    더미 또는 다른 테이블에서 문장의 열 이름을 제공해야합니다.

    INSERT INTO TABLE struct_test
    SELECT NAMED_STRUCT('houseno','123','streetname','GoldStreet', 'town','London', 'postcode','W1a9JF') AS address 
     FROM dummy
    

    또는

    INSERT INTO TABLE struct_test
    SELECT NAMED_STRUCT('houseno',tb.col1,'streetname',tb.col2, 'town',tb.col3, 'postcode',tb.col4) AS address 
     FROM table1 as tb
    
  5. from https://stackoverflow.com/questions/39394499/how-do-you-insert-data-into-complex-data-type-struct-in-hive by cc-by-sa and MIT license