Apache Hudi - Amazon Athena

Apache Hudi

Apache Hudi는 증분 데이터 처리를 간소화하는 오픈 소스 데이터 관리 프레임워크입니다. 레코드 수준의 삽입, 업데이트, 업서트 및 삭제 작업이 더 높은 정밀도로 처리되며, 이때 오버헤드가 줄어듭니다.

Athena for Spark에서 Apache Hudi 테이블을 사용하려면 다음 Spark 속성을 구성합니다. Apache Hudi를 테이블 형식으로 선택하면 Athena for Spark 콘솔에서 이러한 속성이 기본적으로 구성됩니다. 관련 단계는 세션 세부 정보 편집 또는 사용자 노트북 생성 섹션을 참조하세요.

"spark.sql.catalog.spark_catalog": "org.apache.spark.sql.hudi.catalog.HoodieCatalog", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"

다음 절차는 Athena for Stork 노트북에서 Apache Hudi 테이블을 사용하는 방법을 보여줍니다. 노트북의 새 셀에서 각 단계를 실행합니다.

Athena for Spark에서 Apache Hudi 테이블을 사용하려면
  1. 노트북에서 사용할 상수를 정의합니다.

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://amzn-s3-demo-bucket"
  2. Apache Spark DataFrame을 생성합니다.

    columns = ["language","users_count"] data = [("Golang", 3000)] df = spark.createDataFrame(data, columns)
  3. 데이터베이스를 생성합니다.

    spark.sql("CREATE DATABASE {} LOCATION '{}'".format(DB_NAME, TABLE_S3_LOCATION))
  4. 빈 Apache Hudi 테이블을 생성합니다.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING HUDI TBLPROPERTIES ( primaryKey = 'language', type = 'mor' ); """.format(DB_NAME, TABLE_NAME))
  5. 테이블에 데이터 행을 삽입합니다.

    spark.sql("""INSERT INTO {}.{} VALUES ('Golang', 3000)""".format(DB_NAME,TABLE_NAME))
  6. 새 테이블을 쿼리할 수 있는지 확인합니다.

    spark.sql("SELECT * FROM {}.{}".format(DB_NAME, TABLE_NAME)).show()