apache-spark - 如何将 Great Expectations 结果从 Apache Spark 保存到文件 - 使用数据文档

标签 apache-spark pyspark databricks azure-databricks great-expectations

我已经成功创建了一个 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 上可视化数据文档 - 您只需要使用 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))

它会显示这样的东西:

enter image description here

我们可以使用 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))

它会显示这样的东西:

enter image description here

或者我们可以使用 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))

它会显示这样的东西:

enter image description here

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

关于apache-spark - 如何将 Great Expectations 结果从 Apache Spark 保存到文件 - 使用数据文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68023413/

相关文章:

scala - 如何在 Spark 2.3.0 UDF 中为每个工作人员构建并保留一个引用对象?

csv - 通过 Apache-Spark 从 AWS S3 加载数据

apache-spark - PySpark to_utc_timestamp 返回相同时间

apache-spark - 在数据帧上使用partitionBy时出现dataproc警告

mysql - 在 Apache Spark 2.0.0 中,是否可以从外部数据库获取查询(而不是获取整个表)?

python - 无法训练 pySpark SVM,标记点问题

sql - 为什么 Azure Databricks 中的时间格式发生变化

apache-spark - spark.sql 与 SqlContext

apache-spark - Spark ML 朴素贝叶斯用概率预测多个类别

python - 如何确保值映射到正确的增量表列?