apache-spark - JavaPackage 对象不可调用错误 : Pyspark

标签 apache-spark pyspark python-3.4 apache-zeppelin py4j

像 dataframe.show() 和 sQLContext.read.json 这样的操作工作正常,但大多数函数给出“JavaPackage object is not callable error”。 例如:当我这样做时

dataFrame.withColumn(field_name, monotonically_increasing_id())

我得到一个错误

File "/tmp/spark-cd423f35-9572-45ee-b159-1b2732afa2a6/userFiles-3a6e1729-95f4-468b-914c-c706369bf2a6/Transformations.py", line 64, in add_id_column
    self.dataFrame = self.dataFrame.withColumn(field_name, monotonically_increasing_id())
  File "/home/himaprasoon/apps/spark-1.6.0-bin-hadoop2.6/python/pyspark/sql/functions.py", line 347, in monotonically_increasing_id
    return Column(sc._jvm.functions.monotonically_increasing_id())
TypeError: 'JavaPackage' object is not callable

我正在使用 apache-zeppelin 解释器并将 py4j 添加到 python 路径。

当我做的时候

import py4j
print(dir(py4j))

导入成功

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'compat', 'finalizer', 'java_collections', 'java_gateway', 'protocol', 'version']

当我尝试过

print(sc._jvm.functions)

它在 pyspark shell 中打印

<py4j.java_gateway.JavaClass object at 0x7fdaf9727ba8>

但是当我在我的解释器中尝试这个时,它会打印出来

<py4j.java_gateway.JavaPackage object at 0x7f07cc3f77f0> 

最佳答案

在 zeppelin 解释器代码中

java_import(gateway.jvm, "org.apache.spark.sql.*")

没有被执行。将此添加到导入中解决了问题

关于apache-spark - JavaPackage 对象不可调用错误 : Pyspark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37153866/

相关文章:

hadoop - Spark : Hive Insert overwrite throws ClassNotFoundException

python - 如何使用python 3检查文件夹是否包含文件

python - 元素的大小不会在 Kivy 中的应用程序加载时更新

scala - 将数据帧列中的空值替换为其他数据帧中的值到 id

sql - pyspark.sql.functions.window 函数的 'startTime' 参数和 window.start 有什么作用?

apache-spark - 倒回并重新消耗来自 Kafka 的结构化流中的偏移量

python - PySpark 作业在加载多个文件时失败并且缺少一个

apache-spark - Spark magic 输出提交器设置无法识别

python - 如何序列化 pyspark 管道对象?

python - 安全配置解析器 : sections and environment variables