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 Spark 筆記本中使用 Apache Hudi 資料表。在記事本的新儲存格中執行每個步驟。

若要在 Athena for Spark 中使用 Apache Hudi 資料表
  1. 定義要在筆記本中使用的常數。

    DB_NAME = "NEW_DB_NAME" TABLE_NAME = "NEW_TABLE_NAME" TABLE_S3_LOCATION = "s3://DOC-EXAMPLE-BUCKET"
  2. 創建一個阿帕奇星火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()