6

PySpark でカスタム HDFS リーダー クラスを実行しようとしています。このクラスは Java で記述されており、シェルまたは spark-submit を使用して、PySpark からアクセスする必要があります。

PySpark では、SparkContext から JavaGateway を取得します ( sc._gateway)。

クラスがあるとします:

package org.foo.module

public class Foo {

    public int fooMethod() {
        return 1;
    }

}

私はそれをjarファイルにパッケージ化し、--jarオプションを付けてpysparkに渡してから実行しようとしました:

from py4j.java_gateway import java_import

jvm = sc._gateway.jvm
java_import(jvm, "org.foo.module.*")

foo = jvm.org.foo.module.Foo()

しかし、私はエラーが発生します:

Py4JError: Trying to call a package.

誰かがこれを手伝ってくれますか?ありがとう。

4

4 に答える 4

0

PySpark を IDE (PyCharm など) でローカルに実行する場合、jar でカスタム クラスを使用するには、jar を $SPARK_HOME/jars に配置できます。これは、Spark を実行するクラス パスに追加されます。$SPARK_HOME のコード スニペットを確認してください。詳細については、/bin/spark-class2.cmd を参照してください。

于 2021-01-12T03:08:50.730 に答える
-1

パッケージをアクションにインポートするために--jars使用する必要はありません。--packagesspark-submit

于 2015-11-05T12:43:19.930 に答える