Apache Hudi 데이터세트 쿼리
Apache HudiUpsert는 레코드가 존재하지 않으면 기존 데이터 집합에 레코드를 삽입하고 레코드가 존재하면 레코드를 업데이트할 수 있는 기능입니다.
Hudi는 분석 시 성능 문제를 일으킬 수 있는 다수의 작은 파일을 발생시키지 않고도 데이터 삽입 및 업데이트 이벤트를 처리합니다. Apache Hudi는 자동으로 변경 사항을 추적하고 파일을 병합하여 최적의 크기를 유지합니다. 이렇게 하면 다수의 작은 파일을 더 적은 수의 대용량 파일에 다시 쓰고 모니터링하는 사용자 지정 솔루션을 빌드할 필요가 없습니다.
Hudi 데이터 집합은 다음과 같은 사용 사례에 적합합니다.
-
개인 정보를 제거하거나 자신의 데이터 사용 방식을 변경할 수 있는 사람들의 권리를 강제하는 일반 데이터 보호 규정
(GDPR) 및 캘리포니아 소비자 개인정보보호법 (CCPA)과 같은 개인 정보 보호 규정의 준수. -
특정 데이터 삽입 및 업데이트 이벤트가 필요한 센서 및 기타 사물 인터넷(IoT) 디바이스에서의 스트리밍 데이터 작업.
-
변경 데이터 캡쳐(CDC) 시스템
의 구현.
Hudi 데이터 집합은 다음 유형 중 하나일 수 있습니다.
-
쓸 때 복사(CoW) - 데이터가 열 기반 형식(Parquet)으로 저장되며, 각 업데이트마다 쓰기 중에 새 버전의 파일을 만듭니다.
-
읽을 때 병합(MoR) - 데이터가 열 기반 형식(Parquet)과 행 기반(Avro) 형식을 조합하여 저장됩니다. 업데이트는 행 기반
delta파일에 기록되며 새 버전의 열 형식 파일을 작성할 때 필요에 따라 압축됩니다.
CoW 데이터 세트를 사용하면 레코드에 대한 업데이트가 있을 때마다 레코드가 포함된 파일이 업데이트된 값으로 다시 작성됩니다. MoR 데이터 세트를 사용하면 Hudi는 업데이트가 있을 때마다 변경된 레코드에 대한 행만 씁니다. MoR은 읽기 수행이 적고 쓰기 또는 변경이 많은 워크로드에 더 적합합니다. CoW는 자주 변경되지 않는 데이터에서 읽기 수행이 많은 워크로드에 더 적합합니다.
Hudi는 데이터 액세스를 위해 세 가지 쿼리 유형을 제공합니다.
-
스냅샷 쿼리 - 지정된 커밋 또는 압축 작업 시 테이블의 최신 스냅샷을 보는 쿼리입니다. MoR 테이블의 경우 스냅샷 쿼리는 쿼리 시의 최신 파일 슬라이스의 기본 파일과 델타 파일을 병합하여 테이블의 최신 상태를 나타냅니다.
-
증분의 쿼리 - 이 쿼리는 지정된 커밋/압축 이후 테이블에 기록된 새 데이터만 볼 수 있습니다. 이는 변경 스트림을 효과적으로 제공하여 증분 데이터 파이프라인을 사용할 수 있도록 합니다.
-
읽기 최적화 쿼리 - MoR 테이블의 경우 쿼리가 압축된 최신 데이터를 표시합니다. CoW 테이블의 경우 이 쿼리는 커밋된 최신 데이터를 보여줍니다.
다음 표에는 각 테이블 유형에 사용할 수 있는 Hudi 쿼리 유형이 나와 있습니다.
| 테이블 유형 | 가능한 Hudi 쿼리 유형 |
|---|---|
| 쓸 때 복사 | 스냅샷, 증분 |
| 읽을 때 병합 | 스냅샷, 증분, 읽기 최적화 |
테이블 유형과 쿼리 유형 간의 장단점에 대한 자세한 내용은 Apache Hudi 설명서의 Table & Query Types(테이블 및 쿼리 유형)
Hudi 용어 변경: 뷰가 이제 쿼리로 변경됨
Apache Hudi 릴리스 버전 0.5.1부터 이전에는 뷰라고 불렸던 것을 이제 쿼리라고 합니다. 다음 표에 이전 용어와 새 용어 간의 변경 내용이 요약되어 있습니다.
| 이전 용어 | 새 용어 |
|---|---|
|
CoW: 읽기 최적화 뷰 MoR: 실시간 뷰 |
스냅샷 쿼리 |
| 증분 뷰 | 증분 쿼리 |
| MoR 읽기 최적화 뷰 | 읽기 최적화 쿼리 |