如何从 PySpark 中的 JavaSparkContext 获取 SparkContext?

Posted

技术标签:

【中文标题】如何从 PySpark 中的 JavaSparkContext 获取 SparkContext?【英文标题】:How to get SparkContext from JavaSparkContext in PySpark? 【发布时间】:2015-03-20 18:02:25 【问题描述】:

当我运行 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,为什么我无法访问我有权访问的 JavaSparkContext 中包含的 SparkContext

【问题讨论】:

【参考方案1】:

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 错误)。

【讨论】:

嗨,这看起来确实是 help 命令和 SparkContext 类声明方式的错误。不要犹豫,打开错误报告github.com/bartdag/py4j/issues/new :-)

以上是关于如何从 PySpark 中的 JavaSparkContext 获取 SparkContext?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pyspark 中的本地 jar 导入包?

如何从 PySpark 中的向量结构中获取项目

如何从 Pyspark 中的 MapType 列获取键和值

如何从 Pyspark 中的 RDD 中过滤

如何从 Databrick/PySpark 覆盖/更新 Azure Cosmos DB 中的集合

如何从 PySpark 中的数据框中获取模式定义?