Apache Hudi 및 Lake Formation - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Apache Hudi 및 Lake Formation

Amazon EMR 릴리스 6.15.0 이상에는 Spark AWS Lake Formation 를 사용하여 데이터를 읽고 쓸 때 Apache Hudi를 기반으로 하는 세분화된 액세스 제어에 대한 지원이 포함됩니다SQL. AmazonEMR은 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 INSERT 명령

DDL 명령

Spark 데이터 소스 쿼리

Spark 데이터 소스 쓰기

Hudi 테이블 쿼리

이 섹션에서는 Lake Formation 지원 클러스터에서 앞서 설명한 지원되는 쿼리를 실행하는 방법을 보여줍니다. 테이블은 등록된 카탈로그 테이블이어야 합니다.

  1. 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 카탈로그를 관리하도록 하려면 truespark.sql.catalog.<managed_catalog_name>.lf.managed로 설정합니다.

  2. 테이블의 copy-on-write 최신 스냅샷을 쿼리하려면 다음 명령을 사용합니다.

    SELECT * FROM my_hudi_cow_table
    spark.read.table("my_hudi_cow_table")
  3. 압축된 최신 MOR 테이블 데이터를 쿼리하려면 _ro 접미사가 붙은 읽기 최적화 테이블을 쿼리하면 됩니다.

    SELECT * FROM my_hudi_mor_table_ro
    spark.read.table("my_hudi_mor_table_ro")
참고

지원되지 않는 최적화로 인해 Lake Formation 클러스터의 읽기 성능이 느려질 수 있습니다. 이러한 기능에는 Hudi 메타데이터를 기반으로 하는 파일 목록 및 데이터 건너뛰기가 포함됩니다. 애플리케이션 성능을 테스트하여 요구 사항을 충족하는지 확인하는 것이 좋습니다.