고려 사항 및 제한 사항
Athena를 사용하여 Apache Hudi 테이블을 읽을 때 다음 사항을 고려하세요.
-
읽기 및 쓰기 작업 - Athena는 압축된 Hudi 데이터세트를 읽을 수 있지만 Hudi 데이터를 쓸 수는 없습니다.
-
Hudi 버전 - Athena는 Hudi 버전 0.14.0(기본값) 및 0.15.0을 지원합니다. Athena는 이후 버전의 Hudi로 생성된 테이블과의 읽기 호환성을 보장할 수 없습니다. Hudi 기능 및 버전 관리에 대한 자세한 내용은 Apache 웹 사이트의 Hudi 설명서
를 참조하세요. 참고로, Athena의 Hudi 커넥터 버전 0.15.0은 부트스트랩 테이블을 지원하지 않습니다. Hudi 커넥터의 0.15.0을 사용하려면 다음 테이블 속성을 설정합니다. ALTER TABLEtable_nameSET TBLPROPERTIES ('athena_enable_native_hudi_connector_implementation' = 'true') -
교차 계정 쿼리 - Hudi 커넥터의 버전 0.15.0은 교차 계정 쿼리를 지원하지 않습니다.
-
쿼리 유형 - 현재 Athena는 스냅샷 쿼리와 읽기 최적화 쿼리를 지원하지만 증분 쿼리는 지원하지 않습니다. MOR 테이블에서 읽기 최적화 쿼리에 노출된 모든 데이터는 압축됩니다. 이는 우수한 성능을 제공하지만 최근의 델타 커밋은 포함하지 않습니다. 스냅샷 쿼리에는 가장 최신의 데이터가 포함되지만 일정한 계산 오버헤드가 발생하여 이러한 쿼리의 성능이 떨어집니다. 테이블 유형과 쿼리 유형 간의 장단점에 대한 자세한 내용은 Apache Hudi 설명서의 Table & Query Types(테이블 및 쿼리 유형)
를 참조하세요. -
증분 쿼리 - Athena는 증분 쿼리를 지원하지 않습니다.
-
CTAS – Athena는 Hudi 데이터에 대해 CTAS 또는 INSERT INTO을(를) 지원하지 않습니다. Athena가 Hudi 데이터 집합 쓰기를 지원하길 원하시면
<athena-feedback@amazon.com>에 피드백을 보내세요.Hudi 데이터 쓰기에 대한 자세한 내용은 다음 리소스를 참조하세요.
-
Amazon EMR 릴리스 안내서의 Working with a Hudi dataset(Hudi 데이터 집합 작업).
-
Apache Hudi 설명서의 Writing Data(데이터 쓰기)
.
-
-
MSCK REPAIR TABLE – Athena에서는 Hudi 테이블에 MSCK REPAIR TABLE을 사용할 수 없습니다. AWS Glue에서 생성되지 않은 Hudi 테이블 로드해야 할 경우 ALTER TABLE ADD PARTITION을 사용하세요.
-
Amazon Glacier 객체 건너뛰기 미지원 – Apache Hudi 테이블의 객체가 Amazon Glacier 스토리지 클래스에 있는 경우
read_restored_glacier_objects테이블 속성을false로 설정해도 효과가 없습니다.예를 들어 다음과 같은 명령을 실행한다고 가정하겠습니다.
ALTER TABLEtable_nameSET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')Iceberg 및 Delta Lake 테이블의 경우 이 명령은
지원되지 않는 테이블 속성 키: read_restored_glacier_objects오류를 생성합니다. Hudi 테이블의 경우ALTER TABLE명령은 오류를 생성하지 않지만 여전히 Amazon Glacier 객체를 건너뛰지 않습니다.ALTER TABLE명령 후에SELECT쿼리를 실행하면 계속해서 모든 개체가 반환됩니다. -
타임스탬프 쿼리 — 현재 Hudi 실시간 테이블의 타임스탬프 열을 읽으려고 시도하는 쿼리는 실패하거나 빈 결과를 생성합니다. 이 제한은 타임스탬프 열을 읽는 쿼리에만 적용됩니다. 동일한 테이블의 타임스탬프가 아닌 열만 포함하는 쿼리는 성공합니다.
쿼리가 실패하면 다음과 유사한 메시지가 반환됩니다.
GENERIC_INTERNAL_ERROR: class org.apache.hadoop.io.ArrayWritable cannot be cast to class org.apache.hadoop.hive.serde2.io.TimestampWritableV2 (org.apache.hadoop.io.ArrayWritable and org.apache.hadoop.hive.serde2.io.TimestampWritableV2 are in unnamed module of loader io.trino.server.PluginClassLoader @75c67992) -
0.15.0 Hudi 커넥터에 대한 Lake Formation 권한 - 테이블 속성
athena_enable_native_hudi_connector_implementation을true로 설정하여 네이티브 Hudi 커넥터(버전 0.15.0) 사용을 옵트인할 때만 이 제한이 적용됩니다. 기본적으로 Athena에서는 이 추가 권한이 필요 없는 Hudi 커넥터 버전 0.14.0을 사용합니다. Lake Formation 보호 테이블을 쿼리하려면 테이블의 데이터 위치와.hoodie메타데이터 디렉터리 모두에 Lake Formation 권한을 부여해야 합니다. 예를 들어, Hudi 테이블이s3://bucket/hudi-table/에 있는 경우 Lake Formation에서s3://bucket/hudi-table/과s3://bucket/hudi-table/.hoodie/모두 등록하고 권한을 부여해야 합니다..hoodie디렉터리에는 쿼리 계획 중 Athena에서 읽어야 하는 메타데이터 파일(예:hoodie.properties)이 있습니다..hoodie디렉터리에 대한 권한이 없으면 쿼리가 권한 거부 오류로 실패합니다.