架构验证 json

问题描述 投票:0回答:1

在 databricks 中的 pyspark 中对复杂嵌套 json 进行模式验证的最佳方法是什么。我当前的输入是一个数据框,其中一列为 json。

我正在尝试使用 Jsonschema 库来使用 udf 来验证它,但它使代码变得非常慢。

如有任何帮助,我们将不胜感激

pyspark databricks
1个回答
0
投票

Jsonschema 是用 Python 编写的,因此可能会很慢。我建议使用用 Rust 编写的 Pydantic v2。如果您有 JSON 格式的 JSON 模式,您可以使用 datamodel-code-gen 工具将其转换为 Pydantic 模型:

https://docs.pydantic.dev/latest/integrations/datamodel_code_generator/#code- Generation-with-datamodel-code-generator

这个解决方案可能会更有效,但如果有人向我展示本机 pyspark 解决方案来验证复杂的 JSON,就像在 JSON 模式上工作的库一样,我将不胜感激。

有几种解决方案,但

None
都是完美的。使用 PySpark 最快:

  1. 用数组和结构分解每个嵌套列并使用 Spark SQL 检查它们 - 听起来不太好
  2. 使用 Maven 中的 Everit JSON 库编写 Scala UDF:https://semanticinsight.wordpress.com/2020/10/18/databricks-spark-json-validation-governance/ 并在 PySpark 中运行 Scala - 需要努力,但是可能
  3. Rust + Python UDF 上的 Pydantic - 最简单的方法

除此之外我检查过

  1. https://pandera.readthedocs.io/en/stable/pyspark_sql.html - PySpark 是 Pandera 中的一个新 API,将来可能会很好,但现在它无法处理嵌套数据。只有平面 DF。
  2. Fugue 工具 https://fugue-tutorials.readthedocs.io/ 尝试将自定义 DF 转换从 PySpark 转换为 Pandas 矢量化 UDF,这比常见的 Python UDF 快得多。仍然嵌套的数据是一个障碍。
  3. 我找到了
    great-expectation
    工具,但我仍在检查这个
© www.soinside.com 2019 - 2024. All rights reserved.