복붙노트

[HADOOP] Hive의 쉼표로 구분 된 값의 열

HADOOP

Hive의 쉼표로 구분 된 값의 열

그것은 물어 봤는데 대답 (구분 기호로 쉼표로 여러 행을 하나로 변환), 하이브, 예를 들어 언급 된 접근 방식 중 하나에서 작동합니다. 이걸로 가야 겠어.

+------+------+
| Col1 | Col2 |
+------+------+
| a    | 1    |
| a    | 5    |
| a    | 6    |
| b    | 2    |
| b    | 6    |
+------+------+

이에:

+------+-------+
| Col1 | Col2  |
+------+-------+
| a    | 1,5,6 |
| b    | 2,6   |
+------+-------+

해결법

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

    1.집계 함수 collect_set은 여러분이 얻으려고하는 것을 얻을 수 있습니다. 다음은 문서입니다. 따라서 다음과 같은 쿼리를 작성할 수 있습니다.

    집계 함수 collect_set은 여러분이 얻으려고하는 것을 얻을 수 있습니다. 다음은 문서입니다. 따라서 다음과 같은 쿼리를 작성할 수 있습니다.

    SELECT Col1, collect_set(Col2)
    FROM your_table
    GROUP BY Col1;
    

    그러나 MySQL의 GROUP BY와 Hive의 collect_set 간에는 하나의 현저한 차이가 있습니다. GROUP_CONCAT도 결과 배열에 중복을 유지하지만 collect_set은 배열에서 발생하는 중복을 제거합니다. 표시된 예제에서 Col2에 대한 반복 그룹 값이 없으므로 계속해서 사용할 수 있습니다.

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

    2.전체 목록 (중복 포함)을 취할 collect_list가 있습니다.

    전체 목록 (중복 포함)을 취할 collect_list가 있습니다.

  3. ==============================

    3.이 시도

    이 시도

    SELECT Col1, concat_ws(',', collect_set(Col2)) as col2
    FROM your_table
    GROUP BY Col1;
    

    apache.org documentation

  4. from https://stackoverflow.com/questions/22705398/column-to-comma-separated-value-in-hive by cc-by-sa and MIT license