apache-spark - 它在 spark 中的 py4j gatewayServer 的入口点是什么?

标签 apache-spark pyspark py4j

我试图使用 py4j 在 pyspark 中运行一个 java 函数。 Py4j 支持访问 JVM 中的 java 对象。我创建了另一个 JVM 实例并且能够成功运行 java 函数。

py4j 通过 GatewayServer 实例启用此通信。

我想知道我们是否可以通过某种方式访问​​ spark 的内部 JVM 来运行我的 java 函数? spark 中 py4j Gatewayserver 的入口点是什么?如何将我的函数添加到入口点?

最佳答案

我不确定这是否是您需要的,但我看到了两个地方:

sc._gateway.jvm

可用于java_import或直接

sc._jvm

因此,要访问包 a.b.c 中的类 X,您可以执行以下操作之一:

jvm = sc._gateway.jvm
java_import(jvm,"a.b.c.X")
instance = a.b.c.X()

或更直接:

instance = sc._jvm.a.b.c.X()

要添加一个 java 函数,您需要确保它在类路径中,如果您想在 worker 中使用它(例如在 UDF 中),那么您需要将它发送给 worker。为实现这一点,您可以使用 --driver-class-path 开关将 spark-submit(或 pyspark)添加到驱动程序和 --jars 以发送给工作人员。

关于apache-spark - 它在 spark 中的 py4j gatewayServer 的入口点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774347/

相关文章:

python - Apache Spark : Error while starting PySpark

python - 删除在pyspark中使用numpy.savetxt创建的csv文件

java - 使用 py4j 将 python 列表转换为 java 数组

python - 如何解决将推文数据插入 Apache Cassandra 数据库时遇到的错误?

hadoop - Spark Structured Streaming 与安全的 Kafka 抛出 : Not authorized to access group exception

python - 从列表创建 DataFrame

python - 在分布式系统中实现DBSCAN

apache-spark - 如何在 PySpark 中用 NULL 替换字符串值?

python - 如何隐藏 "py4j.java_gateway:Received command c on object id p0"?

java - Py4J 的开销比 Jython 和 JPype 大