AttributeError:当将sql函数作为默认参数传递时,'NoneType'对象没有属性'_jvm'

时间:2018-03-09 15:06:01

标签: python python-3.x pyspark apache-spark-sql pyspark-sql

我知道之前已经询问了同样的错误,但在this examplethis other example中,错误是由pyspark.sql中的udf函数引起的。这不是我在做的事。

违规代码是以下函数定义(如果我删除默认参数,我的代码运行并通过所有测试)。

from pyspark.sql import functions as F

def apply_filter(df, group=F.lit(True)):
    filtered_df = df.filter(group)

我主要是在查找此代码产生与其他示例中相同的错误的原因。

编辑:

由于工作原因我无法共享原始代码,但如果您使用spark-submit --deploy-mode cluster <filename>运行上一代码,则会产生以下错误。

LogType:stdout
Log Upload Time:Fri Mar 09 16:01:45 +0000 2018
LogLength:343
Log Contents:
Traceback (most recent call last):
  File "temp.py", line 3, in <module>
    def apply_filter(df, group=F.lit(True)):
  File "/mnt/yarn/usercache/hadoop/appcache/application_1520603520946_0005/container_1520603520946_0005_01_000001/pyspark.zip/pyspark/sql/functions.py", line 40, in _
AttributeError: 'NoneType' object has no attribute '_jvm'
End of LogType:stdout

有趣的是,如果它在本地运行,则错误不会持续存在。

1 个答案:

答案 0 :(得分:0)

无法实例化spark上下文时发生此错误。当你在var value = event.snapshot.value.keys; 中使用pyspark sql函数时,你试图在其中实例化一个不允许的spark上下文。

为什么火花上下文无法实例化可能有几个原因

  • 错误的火花配置
  • 冲突的节点配置
  • 部署与群集配置不匹配的jar
  • ...