Apache Iceberg - Amazon Athena

Apache Iceberg

Apache Iceberg는 Amazon Simple Storage Service(S3)의 대형 데이터 세트를 위한 오픈 테이블 형식입니다. 이 테이블 형식은 대형 테이블, 원자성 커밋, 동시 쓰기, SQL 호환 테이블 진화 등에서 빠른 쿼리 성능을 제공합니다.

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

"spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.spark_catalog.io-impl": "org.apache.iceberg.aws.s3.S3FileIO", "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"

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

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

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://DOC-EXAMPLE-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 Iceberg 테이블을 생성합니다.

    spark.sql(""" CREATE TABLE {}.{} ( language string, users_count int ) USING ICEBERG """.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()

Spark DataFrames 및 Iceberg 테이블을 사용하는 방법에 대한 자세한 내용 및 예제는 Apache Iceberg 설명서의 Spark Queries를 참조하세요.