選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 Amazon EMR 上使用 Hudi 的考量與限制 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon EMR 上使用 Hudi 的考量與限制

  • 記錄索引鍵欄位不能為 null 或空白 – 您指定的記錄索引鍵欄位不能有 null 或空白值。

  • 結構描述預設在 upsert 和插入時更新 – 提供了一個介面,HoodieRecordPayload 確定輸入 DataFrame 和現有 Hudi 資料集如何合併以產生一個新的、更新的資料集。Hudi 提供此類的預設實作 OverwriteWithLatestAvroPayload,它會覆寫現有記錄,並更新輸入 DataFrame 中指定的結構描述。若要自訂此邏輯以實作合併和部分更新,您可以使用 DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY 參數提供 HoodieRecordPayload 界面的實作。

  • 刪除需要結構描述 – 刪除時,您必須指定記錄索引鍵、分割區索引鍵,以及預先組合索引鍵欄位。其他欄位可以為 null 或空白,但需要完整的結構描述。

  • MoR 資料表限制 – MoR 資料表不支援儲存點。您可以使用 Spark SQL、Presto 或 Hive 中的讀取優化檢視或即時檢視 (tableName_rt) 查詢 MoR 資料表。使用讀取優化的檢視僅公開基本檔案資料,而不公開基本資料和日誌資料的合併檢視。

  • Hive

    • 對於 Hive 中繼存放區中的註冊資料表,Hudi 會預期 Hive Thrift 伺服器執行於預設連接埠 10000。如果您以自訂連接埠覆寫此連接埠,請傳遞下列範例所示的 HIVE_URL_OPT_KEY 選項。

      .option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:override-port-number
    • Spark 中的 timestamp 資料類型被註冊為 Hive 中的 long 資料類型,而非 Hive 的 timestamp 類型。

  • Presto

    • Presto 不支援在 0.6.0 以下的 Hudi 版本中讀取 MoR 即時資料表。

    • Presto 僅支援快照查詢。

    • 若要讓 Presto 正確解譯 Hudi 資料集欄位,請將 hive.parquet_use_column_names 值設定為 true

      • 若要設定工作階段的值,請在 Presto Shell 中執行下列命令:

        set session hive.parquet_use_column_names=true
      • 若要在叢集層級設定值,請使用 presto-connector-hive 組態分類將 hive.parquet.use_column_names 設定為 true,如下列範例所示。如需詳細資訊,請參閱設定應用程式

        [ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
  • HBase 索引

    • 用於建置 Hudi 的 HBase 版本可能與 EMR 版本指南中列出的版本不同。若要提取 Spark 工作階段的正確依存項目,請執行下列命令。

      spark-shell \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/cli/lib/*.jar \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.hive.convertMetastoreParquet=false"
  • 最佳效能的設定 – 對於 EMR 7.3+/Hudi 0.15+,建議客戶設定此組態以減少 Kryo 序列化額外負荷:

    --conf 'spark.kryo.registrator=org.apache.spark.HoodieKryoRegistrar'
    注意

    如果您在 EMR Serverless 上使用精細存取控制 (FGAC),則不需要此組態,因為使用者必須使用 JavaSerializer 而非 KryoSerializer。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。