View a markdown version of this page

Amazon EMR Data Quality - Amazon EMR

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

Amazon EMR Data Quality

採用 AWS Glue Data Quality 技術的 Amazon EMR Data Quality 可讓您測量和監控 Amazon EMR Spark 工作負載讀取和寫入的資料品質,而無需離開 Spark 應用程式。Amazon EMR Data Quality 使用與 Glue Data Quality 相同的開放原始碼 Deequ AWS 引擎。從 Amazon EMR 上 Apache Spark (emr-spark-8.1.0) 的 AWS 執行期開始,您可以將EvaluateDataQuality轉換新增至 Spark 指令碼,直接在 Amazon EMR Spark 應用程式中評估資料品質。轉換會針對 DataFrame 執行宣告規則集,並傳回處理中的每個規則結果,讓您的應用程式可以根據結果採取行動 (例如,規則失敗時中止下游寫入)。每個評估也會發佈到 AWS Glue Data Quality,因此您可以檢閱執行的歷史記錄,並對它們發出提醒,以及來自 AWS Glue ETL 和 AWS Glue Data Catalog 的執行。

使用 Amazon EMR Data Quality 需要以資料品質定義語言 (DQDL) 撰寫的 Spark 應用程式和規則集。除了現有的 Spark 工作流程之外,不需要其他程式設計。

Amazon EMR Data Quality 適用於所有三種 Amazon EMR 部署模式:Amazon EMR on EC2、Amazon EMR on EKS 和 Amazon EMR Serverless。它僅支援 Apache Spark。

Data Quality 的運作方式

Amazon EMR Data Quality 是 Spark 轉換。您可以傳遞 DataFrame 和 DQDL 規則集;它會評估規則並傳回結果的 DataFrame。每個評估也會發佈至 AWS Glue Data Quality,以便您稍後可以透過 APIs 或 Glue AWS 主控台查詢結果。 AWS Glue ETL 和 AWS Glue Data Catalog 會發佈至相同的存放區,因此您可以將 Amazon EMR 執行與來自這些引擎的執行進行比較。

您可以將資料品質期望定義為以資料品質定義語言 (DQDL) 參考撰寫的宣告式規則集。規則集是一組描述資料集預期屬性的規則。例如,下列規則集會檢查資料表是否具有超過 100 個資料列、其customer_id資料欄是否完整且唯一,以及資料country欄是否從一組固定值中繪製。

Rules = [ RowCount > 100, IsComplete "customer_id", IsUnique "customer_id", ColumnValues "country" in ["US", "CA", "MX"] ]

在執行時間,EvaluateDataQuality轉換會讀取 DataFrame、使用 Glue Data Quality AWS 和 AWS Glue Data Catalog 所使用的相同 Deequ 引擎評估每個規則,並傳回每個規則的結果 (Failed、 Passed或 Error)。失敗的規則包含觀察值,因此您可以對其進行分類,而無需重新執行應用程式。結果是您的應用程式可以分支、記錄或保留的 Spark DataFrame。

Data Quality 也會將每個評估發佈至 Glue Data Quality AWS 服務。從那裡,您可以:

  • 使用 AWS Glue Data Quality APIs (GetDataQualityResultV2、ListDataQualityResultsV2、BatchGetDataQualityResultV2) AWS CLI、 或 Glue AWS 主控台查詢歷史結果。

  • 在應用程式設定 AWS 時,在驗證的 Glue Data Catalog 資料表下的 AWS Glue 主控台中檢視執行publishToDataCatalogTarget。執行會出現在指定資料庫和資料表的資料品質索引標籤上,以及以相同資料表為目標的 AWS Glue ETL 執行。

  • 啟用每次執行所產生的統計資料時間序列的異常偵測。

由於結果可以發佈到 Glue Data Quality AWS 所使用的相同存放區,因此您可以關聯跨運算引擎的執行。共用 EvaluationContext(您傳遞至轉換的字串識別符) 的執行會在主控台和異常偵測訓練中顯示為單一邏輯資料集,無論它們是來自 Amazon EMR Spark 應用程式或 AWS Glue ETL 任務。

概念和術語

本章和 AWS Glue Data Quality APIs和主控台中都會顯示下列術語。

規則

有關資料集的單一宣告性聲明,以 DQDL 撰寫。例如 RowCount > 1000 或 IsUnique "order_id"。每個規則評估為 Passed、 Failed或 Error。

規則集

在對 的單一呼叫中一起評估的指定規則集合EvaluateDataQuality。

分析器

為資料集計算而不宣告通過或失敗結果的統計資料,例如 Mean "order_total"。分析器種子規則閾值並訓練異常偵測模型。請參閱 分析器。

資料品質分數

規則集中傳遞給指定執行的規則百分比,計算為 rules passed / (rules passed + rules failed)。錯誤和觀察不會對分數做出貢獻的規則。分數由 AWS Glue Data Quality APIs傳回,當您的應用程式設定 時publishToDataCatalogTarget,則會在屬性目錄資料表的資料品質索引標籤上 AWS Glue 主控台中的表面。

觀察

異常偵測標記為超出其預測範圍的值。觀察結果不會降低資料品質分數。請參閱 異常偵測。

EvaluationContext

字串識別符,可將相同邏輯資料集的執行分組至運算引擎。共用 的執行EvaluationContext會提供相同的異常偵測模型,並同時出現在 Glue AWS 主控台中。請參閱 比較跨 Amazon EMR 和 Glue AWS 執行。

發布

將EvaluateDataQuality執行結果寫入 Glue Data Quality AWS 服務的步驟,以便稍後可以透過 AWS Glue Data Quality APIs 和 Glue AWS 主控台讀取。預設會啟用發佈,並由 中的 enableDataQualityResultsPublishing金鑰控制publishing_options。每個發佈都由 鍵入EvaluationContext,這是異常偵測和跨引擎比較用於群組執行的識別符。當應用程式也設定 時publishToDataCatalogTarget,執行會歸因於目錄資料表,並顯示在 Glue AWS 主控台中該資料表的資料品質索引標籤中。

DQDL

Data Quality Definition Language,用來撰寫 Data Quality 規則集的宣告性語言。請參閱 規則評估和 DQDL。

在管道中驗證的位置

您可以在 Spark 指令碼中的任何EvaluateDataQuality位置叫用 。三種常見模式為:

  • 驗證前。讀取後立即評估原始輸入。在將運算花費在應用程式的其餘部分之前,請使用此選項在上游問題 (遺失檔案、結構描述偏離、空資料表) 上快速失敗。

  • 內嵌驗證。在轉換之間評估中繼 DataFrame。使用此選項來檢查特定步驟的輸出 (例如聯結或彙總之後)。

  • 驗證後。在寫入目的地之前評估最終 DataFrame。使用此選項在結果上鎖定下游發佈:資料Outcome欄上的分支,並在任何規則失敗時中止寫入。

下列 PySpark 程式碼片段會針對驗證後評估的結果進行寫入。

results = EvaluateDataQuality.apply( frame=final_df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, ) failed = results.filter("Outcome in ('Failed', 'Error')").count() if failed > 0: raise RuntimeError(f"{failed} data quality rules failed or errored; aborting write") final_df.write.mode("overwrite").parquet("s3://amzn-s3-demo-bucket/orders_curated/")

限制

  • 單一規則集最多可包含 2,000 個規則。

  • 規則集的序列化 DQDL 來源不得超過 65 KB。

  • Data Quality 會在您建立規則或分析器時收集統計資料。儲存這些統計資料不會產生相關費用。不過,每個帳戶限制 100,000 個統計資料,這些統計資料最多會保留兩年。

  • Data Quality 僅支援 Amazon EMR 上的 Apache Spark 應用程式。它不會在 Amazon EMR 支援的 Hive、Trino、Flink 或其他非 Spark 引擎上執行。