当前位置: 首页 > 知识库问答 >
问题:

在PySpark中运行自定义Java类

关昊天
2023-03-14

我试图在PySpark中运行一个自定义的HDFS阅读器类。这个类是用Java编写的,我需要从PySpark访问它,可以从shell访问,也可以使用spark-submit访问。

package org.foo.module

public class Foo {

    public int fooMethod() {
        return 1;
    }

}
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.

有人能帮忙吗?谢了。

共有1个答案

慕烨烁
2023-03-14

在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
 类似资料:
  • 我的主要班级 请就这个问题进行指导。

  • 请让我知道,如果这是不是正确的地方发布,但我一直在寻找有关这方面的信息,似乎找不到一个简洁的答案。 我一直在尝试使用KeyClope来满足我们应用程序的用户管理需求。虽然我发现KeyClope非常有能力,也非常有效,但我已经进入了我们使用的死胡同。 背景: 传统上,我们的应用程序使用一个非常基本的登录框架来验证身份验证。然后使用我们无法更改的第三方应用程序,确定用户将通过wsdl操作拥有的角色,并

  • 我正在尝试运行一个Java类作为gradle任务。 我已将此添加到我的: 但是,当我在命令行上运行时,它会失败并出现以下错误: 因此,我在我的任务中添加了一个类路径,如问题中所述: 然而,这是一个大型的遗留项目,具有非常长的类路径,所以当我运行< code > gradle download keystore 时,我得到了另一个错误: 所以我在中修改了我的,现在看起来像这样: 这适用于命令行,但是

  • 问题内容: 我正在尝试中构建一个简单的自定义。我在这里可以编写自定义的Transformer,但是我不确定如何在上执行此操作Estimator。我也不明白做什么,为什么我需要这么多的设置方法和获取方法。似乎有一个适用于自定义模型的文档(请参阅此处,但PySpark没有。 示例模型的伪代码: 问题答案: 一般来说,没有文档,因为对于Spark 1.6 / 2.0,大多数相关API都不打算公开。它应该

  • 问题内容: 到目前为止,我已经在Jenkins中看到了与构建过程相关的不同选项和工作。我想知道是否存在创建作业的方法,该作业将连接到数据库并运行脚本,该脚本将执行某些操作。也许Jenkins可以运行脚本文件或仅存储一些要运行的动作。提前致谢。 问题答案: 您有两个主要选择: 使用 执行外壳程序 或 执行Windows批处理命令 构建步骤 使用基于Java的工具,例如liquibase,ant任务,

  • 我正在尝试从命令行运行liquibase更新。然而,我的changelog文件中有一个customChange,即一个实现liquibase的Java文件。改变风俗自定义更改。通过Spring运行时,更新成功。然而,当我试图通过命令行使用 我收到以下错误: Liquibase Community 3.8.6,运行Liquibase时出现意外错误:Liquibase。解析器。果心ParsedNode