【问题标题】:JavaPackage object is not callable error for pydeequ constraint suggestionJavaPackage 对象不是 pydeequ 约束建议的可调用错误
【发布时间】:2023-02-18 15:59:37
【问题描述】:
尝试在数据块上运行 PyDeequ 约束建议方法时出现“JavaPackage 对象不可调用”错误。
我曾尝试在 Apache Spark 3.1.2 集群和 Apache Spark 3.0.1 集群上运行这段代码,但没有成功。
suggestionResult = ConstraintSuggestionRunner(spark).onData(df).addConstraintRule(DEFAULT()).run()
print(suggestionResult)
请参阅所附的第二个屏幕截图以了解扩展的错误状态。
PyDeequ error screenshot
Expanded PyDeequ error screenshot
【问题讨论】:
标签:
apache-spark
pyspark
databricks
【解决方案1】:
我能够结合一些解决方案found here,以及其他解决方案,以克服 Azure Databricks 中的上述 JavaPackage 错误。以下是详细信息,如果对任何人都有帮助。
从this link,我下载了合适的 JAR 文件来匹配我的 Spark 版本。就我而言,那是deequ_2_0_1_spark_3_2.jar。然后,我在我的集群配置中的 Libraries 下使用 JAR 类型安装了这个文件。
然后下面的工作,在笔记本的不同单元格中运行。
%pip install pydeequ
%sh export SPARK_VERSION=3.2.1
df = spark.read.load("abfss://container-name@account.dfs.core.windows.net/path/to/data")
from pyspark.sql import SparkSession
import pydeequ
spark = (SparkSession
.builder
.getOrCreate())
from pydeequ.analyzers import *
analysisResult = AnalysisRunner(spark)
.onData(df)
.addAnalyzer(Size())
.addAnalyzer(Completeness("column_name"))
.run()
analysisResult_df = AnalyzerContext.successMetricsAsDataFrame(spark, analysisResult)
analysisResult_df.show()