기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Apache Hudi 및 Lake Formation
Amazon EMR 릴리스 6.15.0 이상에는 AWS Lake Formation Spark로 데이터를 읽고 쓸 때 Apache Hudi를 기반으로 하는 세분화된 액세스 제어에 대한 지원이 포함되어 있습니다. SQL EMRAmazon은 Apache Hudi를 통해 표, 행, 열 및 셀 수준의 액세스 제어를 지원합니다. 이 기능을 사용하면 테이블에서 스냅샷 쿼리를 실행하여 지정된 커밋 또는 압축 인스턴트에서 copy-on-write 테이블의 최신 스냅샷을 쿼리할 수 있습니다.
현재 Lake Formation을 지원하는 Amazon EMR 클러스터는 Hudi의 커밋 시간 열을 검색하여 증분 쿼리 및 시간 여행 쿼리를 수행해야 합니다. Spark의 timestamp as of
구문과 함수는 지원하지 않습니다. Spark.read()
올바른 구문은 입니다. select * from table where _hoodie_commit_time <= point_in_time
자세한 내용은 Hudi 테이블의 특정 시점 시간-여행 쿼리를
다음 지원 매트릭스에는 Lake Formation을 포함하는 Apache Hudi의 몇 가지 핵심 기능이 나열되어 있습니다.
쓸 때 복사 | 읽을 때 병합 | |
---|---|---|
스냅샷 쿼리 - Spark SQL |
✓ |
✓ |
읽기 최적화 쿼리 - Spark SQL |
✓ |
✓ |
증분 쿼리 |
✓ |
✓ |
시간 이동 쿼리 |
✓ |
✓ |
메타데이터 테이블 |
✓ |
✓ |
DML |
✓ |
✓ |
DDL명령 |
||
Spark 데이터 소스 쿼리 |
||
Spark 데이터 소스 쓰기 |
Hudi 테이블 쿼리
이 섹션에서는 Lake Formation 지원 클러스터에서 앞서 설명한 지원되는 쿼리를 실행하는 방법을 보여줍니다. 테이블은 등록된 카탈로그 테이블이어야 합니다.
-
Spark 쉘을 시작하려면 다음 명령을 사용합니다.
spark-sql --jars /usr/lib/hudi/hudi-spark-bundle.jar \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog.lf.managed=true
Lake Formation이 레코드 서버를 사용하여 Spark 카탈로그를 관리하도록
spark.sql.catalog.<managed_catalog_name>.lf.managed
하려면 true로 설정하십시오. -
copy-on-write 테이블의 최신 스냅샷을 쿼리하려면 다음 명령을 사용하십시오.
SELECT * FROM
my_hudi_cow_table
spark.read.table("
my_hudi_cow_table
") -
압축된 최신
MOR
테이블 데이터를 쿼리하려면_ro
접미사가 붙은 읽기 최적화 테이블을 쿼리하면 됩니다.SELECT * FROM
my_hudi_mor_table
_rospark.read.table("
my_hudi_mor_table
_ro")
참고
지원되지 않는 최적화로 인해 Lake Formation 클러스터의 읽기 성능이 느려질 수 있습니다. 이러한 기능에는 Hudi 메타데이터를 기반으로 하는 파일 목록 및 데이터 건너뛰기가 포함됩니다. 애플리케이션 성능을 테스트하여 요구 사항을 충족하는지 확인하는 것이 좋습니다.