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