gpt4 book ai didi

java - 在 PySpark 中运行自定义 Java 类

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:04 24 4
gpt4 key购买 nike

我正在尝试在 PySpark 中运行自定义 HDFS 读取器类。此类是用 Java 编写的,我需要通过 shell 或使用 spark-submit 从 PySpark 访问它。

在 PySpark 中,我从 SparkContext (sc._gateway) 中检索 JavaGateway。

假设我有一个类:

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.

有人可以帮忙吗?谢谢。

最佳答案

在 PySpark 中尝试以下操作

from py4j.java_gateway import java_import
java_import(sc._gateway.jvm,"org.foo.module.Foo")

func = sc._gateway.jvm.Foo()
func.fooMethod()

确保您已将 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

关于java - 在 PySpark 中运行自定义 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com