apache-spark - 如何从 PySpark 中的 JavaSparkContext 获取 SparkContext?

标签 apache-spark py4j pyspark

当我运行 PySpark 时,执行

sc._gateway.help(sc._jsc)

成功地给了我一些不错的输出,比如
JavaSparkContext extends org.apache.spark.api.java.JavaSparkContextVarargsWorkaround implements java.io.Closeable {
|  
|  Methods defined here:
|  
|  accumulable(Object, String, AccumulableParam) : Accumulable
|  
|  accumulable(Object, AccumulableParam) : Accumulable
|  
|  accumulator(double, String) : Accumulator
|  
|  accumulator(Object, AccumulatorParam) : Accumulator
|  
|  accumulator(Object, String, AccumulatorParam) : Accumulator
|  
|  accumulator(double) : Accumulator
...

在运行的时候
sc._gateway.help(sc._jsc.sc())

给我一个 Java NPE 的 Py4J 错误
Py4JError: An error occurred while calling None.None. Trace:
java.lang.NullPointerException
at py4j.model.Py4JMember.compareTo(Py4JMember.java:54)
at py4j.model.Py4JMember.compareTo(Py4JMember.java:39)
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at java.util.Collections.sort(Collections.java:155)
at py4j.model.Py4JClass.buildClass(Py4JClass.java:88)
at py4j.commands.HelpPageCommand.getHelpObject(HelpPageCommand.java:118)
at py4j.commands.HelpPageCommand.execute(HelpPageCommand.java:74)
at py4j.GatewayConnection.run(GatewayConnection.java:207)
at java.lang.Thread.run(Thread.java:744)

通过Py4J,为什么我无法访问SparkContext包含在 JavaSparkContext 中我可以访问吗?

最佳答案

sc._jsc.sc()是访问底层 SparkContext 的正确方法。为了显示:

>>> sc._jsc.sc()
JavaObject id=o27
>>> sc._jsc.sc().version()
u'1.1.0'
>>> sc._jsc.sc().defaultMinSplits()
2

您在这里看到的问题是 Py4J 的 help命令无法显示此类的帮助(可能是 Py4J 错误)。

关于apache-spark - 如何从 PySpark 中的 JavaSparkContext 获取 SparkContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080419/

相关文章:

pyspark - 如何将 DLT 目标表定向到 Unity Catalog Metastore

apache-spark - 无法加载数据源 : com. databricks.spark.csv 的类

hadoop - Spark分类数据摘要统计

java - 在 py4j 中使用整个 eclipse 项目

py4j - 如何在 py4j 中将 Java 列表转换为 Python 列表

python-3.x - py4j.protocol.Py4JJavaError 在调用 z :org. apache.spark.api.python.PythonRDD.collectAndServe 时发生

PySpark 结构化流测试支持

python - 检查pyspark中另一个数据帧的一列中的值

python - 获取子目录列表

apache-spark - Spark YARN 集群模式出现此错误 "Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster"