hmo*_*rit 5 python java py4j apache-spark pyspark
我正在尝试在PySpark中运行自定义HDFS阅读器类。这个类是用Java编写的,我需要从PySpark或从shell或通过spark-submit访问它。
在PySpark中,我从SparkContext(sc._gateway)中检索JavaGateway 。
说我有一堂课:
package org.foo.module
public class Foo {
public int fooMethod() {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图将其打包到一个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()
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
Py4JError: Trying to call a package.
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?谢谢。
在 PySpark 中尝试以下操作
from py4j.java_gateway import java_import
java_import(sc._gateway.jvm,"org.foo.module.Foo")
func = sc._gateway.jvm.Foo()
func.fooMethod()
Run Code Online (Sandbox Code Playgroud)
确保您已将 Java 代码编译为可运行的 jar 并像这样提交 spark 作业
spark-submit --driver-class-path "name_of_your_jar_file.jar" --jars "name_of_your_jar_file.jar" name_of_your_python_file.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6687 次 |
| 最近记录: |