Apache Hudi 및 Lake Formation - 아마존 EMR

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

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

증분 쿼리

시간 이동 쿼리

메타데이터 테이블

DMLINSERT명령

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 카탈로그를 관리하도록 spark.sql.catalog.<managed_catalog_name>.lf.managed 하려면 true로 설정하십시오.

  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 메타데이터를 기반으로 하는 파일 목록 및 데이터 건너뛰기가 포함됩니다. 애플리케이션 성능을 테스트하여 요구 사항을 충족하는지 확인하는 것이 좋습니다.