【问题标题】:How to Save Great Expectations results to File From Apache Spark - With Data Docs如何将远大期望结果从 Apache Spark 保存到文件 - 使用数据文档
【发布时间】:2021-09-02 11:56:54
【问题描述】:

我已成功创建 Great_Expectation 结果,我想将期望结果输出到 html 文件。

很少有链接突出显示如何使用所谓的“数据文档”https://docs.greatexpectations.io/en/latest/guides/tutorials/getting_started/set_up_data_docs.html#tutorials-getting-started-set-up-data-docs以人类可读的方式显示结果@

但老实说,文档非常难以理解。

我的期望只是验证我的数据集中的乘客数量在 1 和 6 之间。我想帮助使用“数据文档”将结果输出到文件夹,或者可以将数据输出到文件夹:

import great_expectations as ge
import great_expectations.dataset.sparkdf_dataset
from great_expectations.dataset.sparkdf_dataset import SparkDFDataset
from pyspark.sql.types import StructType, StructField, IntegerType, StringType, BooleanType
from great_expectations.data_asset import DataAsset

from great_expectations.data_context.types.base import DataContextConfig, DatasourceConfig, FilesystemStoreBackendDefaults
from great_expectations.data_context import BaseDataContext
from great_expectations.data_context.types.resource_identifiers import ValidationResultIdentifier
from datetime import datetime
from great_expectations.data_context import BaseDataContext


df_taxi = spark.read.csv('abfss://root@adlspretbiukadlsdev.dfs.core.windows.net/RAW/LANDING/yellow_trip_data_sample_2019-01.csv', inferSchema=True, header=True)

taxi_rides = SparkDFDataset(df_taxi)

taxi_rides.expect_column_value_lengths_to_be_between(column='passenger_count', min_value=1, max_value=6)

taxi_rides.save_expectation_suite()

代码从 Apache Spark 运行。

如果有人能指出我正确的方向,我就能弄清楚。

【问题讨论】:

  • 查看我的答案,说明如何在 Databricks 上或不使用 Databricks 上进行操作

标签: apache-spark pyspark great-expectations


【解决方案1】:

您可以在 Databricks 上可视化数据文档 - 您只需使用 correct renderer 结合将其呈现为 HTML 的 DefaultJinjaPageView,其结果可以使用 displayHTML 显示。我们需要导入必要的类/函数:

import great_expectations as ge
from great_expectations.profile.basic_dataset_profiler import BasicDatasetProfiler
from great_expectations.dataset.sparkdf_dataset import SparkDFDataset
from great_expectations.render.renderer import *
from great_expectations.render.view import DefaultJinjaPageView

要查看分析结果,我们需要使用ProfilingResultsPageRenderer

expectation_suite, validation_result = BasicDatasetProfiler.profile(SparkDFDataset(df))
document_model = ProfilingResultsPageRenderer().render(validation_result)
displayHTML(DefaultJinjaPageView().render(document_model))

它会显示如下内容:

我们可以使用ValidationResultsPageRenderer 可视化验证结果:

gdf = SparkDFDataset(df)
gdf.expect_column_values_to_be_of_type("county", "StringType")
gdf.expect_column_values_to_be_between("cases", 0, 1000)
validation_result = gdf.validate()
document_model = ValidationResultsPageRenderer().render(validation_result)
displayHTML(DefaultJinjaPageView().render(document_model))

它会显示如下内容:

或者我们可以使用 ExpectationSuitePageRenderer 渲染期望套件本身:

gdf = SparkDFDataset(df)
gdf.expect_column_values_to_be_of_type("county", "StringType")
document_model = ExpectationSuitePageRenderer().render(gdf.get_expectation_suite())
displayHTML(DefaultJinjaPageView().render(document_model))

它会显示如下内容:

如果您不使用 Databricks,则可以将数据呈现为 HTML 并将其存储为存储在某处的文件

【讨论】:

  • 嗨@alex ott,你又来找我了。我可以假设我可以对 azure blob 或 ADLS Gen2 使用相同的原理吗?我目前工作的公司没有与 Databricks 合作来访问 Apache Spark,他们正在使用带有 Apache Spark 池的 Azure Synapse 工作区。因此,我需要使用 Azure Blob。您是否将上述解释完全按照您对 Azure Blob 的描述工作?谢谢
  • 我不明白你所说的“expectation_suite”是什么意思
  • 是的,它也应该适用于 azure blob。 DefaultJinjaPageView().render 只需返回 HTML,您可以将其存储在您想要的位置。
  • 嗨@alex ott,我收到以下错误:SyntaxError: unexpected EOF while parsing (<stdin>, line 3) File "<stdin>", line 3 displayHTML(DefaultJinjaPageView().render(document_model)
  • 我应该指出,我正在使用 Apache Spark 上的 Synapse 运行您建议的代码
【解决方案2】:

我已经就这个问题与 Great_Expectations 的开发人员取得了联系。他们告诉我,Azure Synapse 或 Databricks 目前不提供 Data Docs。

【讨论】:

  • 这很奇怪 - 我在 Databricks 中使用数据文档
猜你喜欢
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2015-10-28
  • 2011-07-20
  • 1970-01-01
相关资源
最近更新 更多