반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- 사이버보안
- Yes
- 컴퓨터공학
- 보안
- I'm Sorry
- 버전관리
- 웹개발
- 인공지능
- 자료구조
- 클라우드컴퓨팅
- 컴퓨터과학
- 데이터구조
- 소프트웨어공학
- 데이터분석
- 데이터베이스
- 파이썬
- 데이터과학
- 소프트웨어
- 머신러닝
- 네트워크보안
- 딥러닝
- 네트워크
- 2
- 자바스크립트
- 빅데이터
- 코딩
- 프로그래밍언어
- 컴퓨터비전
- 프로그래밍
Archives
- Today
- Total
스택큐힙리스트
COLLECT_SET() in Hive, 중복 유지? 본문
반응형
하이브에서 수집된 집합(set)에서 중복을 유지하는 방법이 있을까요? 또는 하이브가 제공하는 종합 컬렉션과 비슷한 기능을 다른 방법으로 시뮬레이션할 수 있을까요? 같은 키를 가진 열의 모든 항목을 배열로 집계하고자 합니다.
예:
hash_id | num_of_cats
=====================
ad3jkfk 4
ad3jkfk 4
ad3jkfk 2
fkjh43f 1
fkjh43f 8
fkjh43f 8
rjkhd93 7
rjkhd93 4
rjkhd93 7
다음과 같은 결과를 반환해야 합니다:
hash_agg | cats_aggregate
===========================
ad3jkfk Array<int>(4,4,2)
fkjh43f Array<int>(1,8,8)
rjkhd93 Array<int>(7,4,7)
답변 1
0.13.0 이후에는 COLLECT_LIST(col)를 사용해보세요.
SELECT
hash_id, COLLECT_LIST(num_of_cats) AS aggr_set
FROM
tablename
WHERE
blablabla
GROUP BY
hash_id
;
답변 2
Hive에서의 COLLECT_SET() 함수는 그룹화된 데이터에서 유일한 값을 수집할 때 사용되는 함수입니다. 그러나 이 함수는 기본적으로 중복 값을 제거하여 반환합니다. 이 경우에는 중복 값을 유지하는 방법에 대해 알아보고자 합니다.COLLECT_SET() 함수는 중복 값을 가진 데이터를 수집할 때 사용되는 함수이며, 중복 값을 제거해서 반환하기 때문에, 수집된 데이터는 중복 없이 유일한 값들만 포함하게 됩니다. 그렇기 때문에 COLLECT_SET() 함수를 사용하면 중복 값을 유지할 수 없습니다.
그러나 중복 값을 유지하기 위해서는 COLLECT_SET() 함수 대신 COLLECT_LIST() 함수를 사용할 수 있습니다. COLLECT_LIST() 함수는 중복 값을 그대로 유지하면서 수집된 값을 리스트로 반환합니다. 이를 통해 기존 데이터의 중복 값을 그대로 가지고 있는 새로운 리스트를 생성할 수 있습니다.
예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다.
```
테이블명: students
+-----+------+
| id | name |
+-----+------+
| 1 | Tom |
| 2 | Jerry |
| 3 | Tom |
| 4 | Jerry |
+-----+------+
```
이 테이블에서 학생들의 이름을 수집하고자 할 때, COLLECT_SET() 함수를 사용하면 중복을 제거하여 유일한 이름만을 수집합니다. 그러면 결과는 다음과 같을 것입니다.
```
결과: [Tom, Jerry]
```
하지만 COLLECT_LIST() 함수를 사용하면 중복 값을 유지할 수 있습니다. 그러면 결과는 다음과 같을 것입니다.
```
결과: [Tom, Jerry, Tom, Jerry]
```
따라서 중복 값을 유지하면서 데이터를 수집하고자 할 때에는 COLLECT_LIST() 함수를 사용하면 됩니다.
이렇듯 COLLECT_SET() 함수와 COLLECT_LIST() 함수는 데이터를 수집할 때 사용되는 함수이지만 중복 값을 제거하고 유일한 값만을 수집하는지, 중복 값을 유지하는지 여부에 따라 사용하는 함수를 선택해야 합니다.
반응형
Comments