NameArtem / hse_spark_course

Репозиторий учебных материалов для ДПО от ВШЭ (https://cs.hse.ru/dpo/) и курсов по Apache Spark
19 stars 9 forks source link

TypeError: 'JavaPackage' object is not callable при использовании PyDeeQu #7

Open aplusk23 opened 3 years ago

aplusk23 commented 3 years ago

Пытаюсь запустить pydeequ на кластере databricks на azure. Пробую данный код

from pydeequ.checks import *
from pydeequ.verification import *

# примерные данные
df = spark.sparkContext.parallelize([
    Row(a="foo", b=1, c=5),
    Row(a="bar", b=2, c=6),
    Row(a="baz", b=3, c=None)]).toDF()

# инициализация теста
check = Check(spark, CheckLevel.Error, "Integrity checks")

# rdd обзор / тест данных
checkResult = VerificationSuite(spark) \
    .onData(df) \
    .addCheck(
        check.hasSize(lambda x: x >= 3) \
        .hasMin("b", lambda x: x == 0) \
        .isComplete("c")  \
        .isUnique("a")  \
        .isContainedIn("a", ["foo", "bar", "baz"]) \
        .isNonNegative("b")) \
    .run()

# запуск верификации
checkResult_df = VerificationResult.checkResultsAsDataFrame(spark, checkResult)
checkResult_df.show()

# описание результата
if checkResult.status == "Success":
    print('Тесты пройдены')

else:
    print('Найдены ошибки:')

    for check_json in checkResult.checkResults:
        if check_json['constraint_status'] != "Success":
            print(f"\t{check_json['constraint']} причина: {check_json['constraint_message']}")

Получаю следующую ошибку image

Я что-то не так делаю?

a-gaiduk commented 3 years ago

У меня такая же проблема в Colab, падает на конкретной строчке t

a-gaiduk commented 3 years ago

Если вот так создать Spark сессию (как в документации), все работает.

from pyspark.sql import SparkSession, Row import pydeequ

spark = (SparkSession .builder .config("spark.jars.packages", pydeequ.deequ_maven_coord) .config("spark.jars.excludes", pydeequ.f2j_maven_coord) .getOrCreate())