복붙노트

[HADOOP] 배열 복합 유형 열에 값 삽입 하이브

HADOOP

배열 복합 유형 열에 값 삽입 하이브

insert into 문을 사용하여 배열 열을 포함하는 테이블에 데이터를 추가 할 수 없습니다. 데이터 유형은 array 입니다.

jodbc를 사용하여 다음과 같은 값으로 배열 열에 값을 삽입 할 수 없습니다.

INSERT INTO demo.table (codes) VALUES (['a','b']);

"["또는 "{"기호를 인식하지 못합니다.

다음과 같은 배열 함수 사용하기 ...

INSERT INTO demo.table (codes) VALUES (array('a','b'));

배열 함수를 사용하여 다음과 같은 오류가 발생합니다.

Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values

해결 방법 시도 ...

INSERT into demo.table (codes) select array('a','b');

실패 :

Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement

jdbc를 사용하여 배열 데이터를 열에로드하는 방법은 무엇입니까?

해결법

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

    1.내 테이블에는 STRING, b ARRAY 의 두 열이 있습니다.

    내 테이블에는 STRING, b ARRAY 의 두 열이 있습니다.

    @Kishore Kumar Suthar의 방법을 사용할 때, 나는 이것을 얻었다.

    FAYSED : ParseException 라인 1 : 33에서 '(' 'a' ','in 문 근처의 입력을 인식 할 수 없습니다.

    그러나 나는 다른 방법을 발견하고 그것은 나를 위해 작동합니다 :

    INSERT INTO test.table 
    SELECT "test1", ARRAY("123", "456", "789") 
    FROM dummy LIMIT 1;
    

    dummy는 적어도 하나의 행을 가진 테이블입니다.

  2. ==============================

    2.적어도 하나의 행을 가진 더미 테이블을 만드십시오.

    적어도 하나의 행을 가진 더미 테이블을 만드십시오.

    INSERT INTO demo.table (codes) VALUES (array('a','b')) from dummy limit 1;
    
    hive> select codes demo.table;
    OK
    ["a","b"]
    Time taken: 0.088 seconds, Fetched: 1 row(s)
    
  3. ==============================

    3.필드 직원 ID 및 이름을 포함하는 테이블 직원이 있다고 가정합니다.

    필드 직원 ID 및 이름을 포함하는 테이블 직원이 있다고 가정합니다.

    나는 필드 ID와 Address를 가진 다른 테이블 employee_address를 생성한다. 주소는 array (string) 유형의 복합 데이터입니다.

    여기에 값을 삽입하는 방법은 다음과 같습니다.

    insert into table employee_address select 1, 'Mark', 'Evans', ARRAY('NewYork','11th 
    avenue') from employee limit 1;
    

    여기서 테이블 직원은 단지 더미 테이블 역할을합니다. 데이터가 복사되지 않습니다. 스키마가 employee_address와 일치하지 않을 수 있습니다. 그건 중요하지 않아.

  4. from https://stackoverflow.com/questions/30446601/hive-inserting-values-to-an-array-complex-type-column by cc-by-sa and MIT license