복붙노트

[HADOOP] GROUP BY를 사용하여 단일 열 필드 연결

HADOOP

GROUP BY를 사용하여 단일 열 필드 연결

그룹화하여 한 열 내의 필드를 결합 / 결합하는 방법이 있습니까? 예 :

col1   col2
1     aa
1     bb
1     cc
2     dd
2     ee

나는 다음과 같은 질문을하고 싶다 :

select col1, concat(col2) from tableName group by col1;

출력은 다음과 같아야합니다.

1    aa,bb,cc
2    dd,ee

이것을하기 위해 하이브에 어떤 기능이 있습니까?

해결법

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

    1.다음과 같이 테이블 테스트가 있다고 가정합니다.

    다음과 같이 테이블 테스트가 있다고 가정합니다.

    select id, val from test order by id, val;     
    2   aa
    2   bb
    1   bb
    1   aa
    

    HIVE 함수를 사용할 수 있습니다. collect_set :

    select id, collect_set(val) from test group by id;
    1   ["aa","bb"]
    2   ["bb","aa"]
    

    그러나 collect_set은 중복 요소가 제거 된 객체 세트를 반환합니다.

    자세한 내용은 Language Manual Wiki를 참조하십시오.

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

    2.당신은 이것을 달성하기 위해 concat_ws ()와 collect_list ()를 사용할 수 있습니다 ....

    당신은 이것을 달성하기 위해 concat_ws ()와 collect_list ()를 사용할 수 있습니다 ....

    좋아요.

    select id , concat_ws(",", collect_list(val)) from test group by id; 
    

    ","위 쿼리의 구분 기호입니다.

  3. from https://stackoverflow.com/questions/24199258/concat-single-column-fields-using-group-by by cc-by-sa and MIT license