awslabs / awslabs/python-deequ

py4j.protocol.Py4JError while adding Analyzer in PyDeequ + PySpark

オープン
#154 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug researching
主要言語
Jupyter Notebook
スター
826
フォーク
158
平均マージ
9日 22時間
マージ済み PR(30日)
3

説明

Describe the bug
I'm trying to add analysers for the columns of a PySpark Data Frame, I'm getting py4j.protocol.Py4JError.

To Reproduce
Steps to reproduce the behavior:

  1. Install pydeequ==1.1.0, py4j==0.10.9.7 , pyspark==3.4.1 and Spark == 3.3.0.
  2. Read CSV to PySpark DataFrame.
  3. Instantiate the Analsysis Runner :: analysis_runner = AnalysisRunner(spark).onData(df).addAnalyzer(Size())
  4. Add Completeness and Uniqueness DQ rules for every columns as:

for column in df.columns:
analysis_runner.addAnalyzer(Uniqueness(column))
analysis_runner.addAnalyzer(Completeness(column))
analysisResult= analysis_runner.run()

  1. Run The Pyspark script to see following error:

    analysis_runner.addAnalyzer(Uniqueness(column))
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/pydeequ/analyzers.py", line 134, in addAnalyzer
    _analyzer_jvm = analyzer._analyzer_jvm
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/pydeequ/analyzers.py", line 775, in _analyzer_jvm
    to_scala_seq(self._jvm, self.columns), self._jvm.scala.Option.apply(self.where)
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/pydeequ/scala_utils.py", line 80, in to_scala_seq
    return jvm.scala.collection.JavaConversions.iterableAsScalaIterable(iterable).toSeq()
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/py4j/java_gateway.py", line 1322, in call
    return_value = get_return_value(
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/pyspark/errors/exceptions/captured.py", line 169, in deco
    return f(*a, **kw)
    File "/Users/indusharma/Library/Python/3.9/lib/python/site-packages/py4j/protocol.py", line 330, in get_return_value
    raise Py4JError(
    py4j.protocol.Py4JError: An error occurred while calling z:scala.collection.JavaConversions.iterableAsScalaIterable. Trace:
    py4j.Py4JException: Method iterableAsScalaIterable([class java.lang.String]) does not exist
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:321)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:342)
    at py4j.Gateway.invoke(Gateway.java:276)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
    at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
    at java.lang.Thread.run(Thread.java:750)

Expected behavior
Analysers are run successfully.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):
N/A

Smartphone (please complete the following information):
N/A

Additional context

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

pydeequ/analyzers.py の addAnalyzer と _analyzer_jvm パスから始め、次に pydeequ/scala_utils.py の to_scala_seq を調べます。pydeequ 1.1.0、py4j 0.10.9.7、PySpark 3.4.1、Spark 3.3.0 で報告されたセットアップを再現します。完了条件は、Completeness と Uniqueness の analyzer を正常に追加して実行できることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python, spark
領域
data-engineering
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。