【发布时间】:2016-09-06 08:05:24
【问题描述】:
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>
【问题讨论】:
-
实际上这也应该有效,但是您的配置有些问题。
-
你的司机和工人有相同的python版本吗?
-
是的。我在本地工作,我的司机和工人有相同的 python 版本
标签: apache-spark pyspark python-3.4 apache-zeppelin py4j