복붙노트

[HADOOP] 하이브에 외부 테이블이있는 배열 열 유형을 지원하는 가장 좋은 방법은 무엇입니까?

HADOOP

하이브에 외부 테이블이있는 배열 열 유형을 지원하는 가장 좋은 방법은 무엇입니까?

그래서 탭으로 구분 된 데이터의 외부 테이블이 있습니다. 간단한 테이블은 다음과 같습니다.

create external table if not exists categories
(id string, tag string, legid string, image string, parent string, created_date string, time_stamp int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 's3n://somewhere/';

이제 다른 필드를 끝에 추가하고 쉼표로 구분 된 값 목록이됩니다.

필드 종결자를 지정하는 것과 같은 방식으로 이것을 지정하는 방법이 있습니까? 아니면 serdes 중 하나에 의존해야합니까?

예 :

...list_of_names ARRAY<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ARRAY ELEMENTS SEPARATED BY ','
...

(나는 이것을 위해 serde를 사용해야한다고 가정하고 있지만, 묻는 데 아무런 해가 없다는 것을 알았습니다)

해결법

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

    1.어떻게 할 기존 테이블을 업데이트 할 수 있지만 테이블을 만드는 방법을 모르겠다; 원하는 내용은 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL에서 자세히 볼 수 있습니다. 거기에서 발췌 문장

    어떻게 할 기존 테이블을 업데이트 할 수 있지만 테이블을 만드는 방법을 모르겠다; 원하는 내용은 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL에서 자세히 볼 수 있습니다. 거기에서 발췌 문장

    row_format
      : DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
            [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
    

    테이블 생성의 예는 다음과 같습니다.

    CREATE TABLE IF NOT EXISTS visits
    (
        ... Columns Removed...
    )
        PARTITIONED BY (userdate STRING)
        ROW FORMAT DELIMITED
            FIELDS TERMINATED BY '\001'
            COLLECTION ITEMS TERMINATED BY '\002'
            MAP KEYS TERMINATED BY '\003'
        STORED AS TEXTFILE
    ;
    

    배열에서 char로 채워지는 컬렉션 항목이 찾고자하는 라인입니다.

    hth

  2. from https://stackoverflow.com/questions/6270084/whats-the-best-way-to-support-array-column-types-with-external-tables-in-hive by cc-by-sa and MIT license