显示单个Spark列时出现“'Column' object is not callable”错误

3

我是一个新的Spark用户,之前我使用的是pandas。这是我的Spark数据框架:

In[75]:  spDF
Out[75]: DataFrame[customer_id: string, name: string]

当我 展示 给他们看时

In[75]:  spDF.show()
Out[75]:

+-----------+-----------+
|customer_id|       name|
+-----------+-----------+
|      25620| MCDonnalds|
|      25620|  STARBUCKS|
|      25620|        nan|
|      25620|        nan|
|      25620| MCDonnalds|
|      25620|        nan|
|      25620| MCDonnalds|
|      25620|DUNKINDONUT|
|      25620|   LOTTERIA|
|      25620|        nan|
|      25620| MCDonnalds|
|      25620|DUNKINDONUT|
|      25620|DUNKINDONUT|
|      25620|        nan|
|      25620|        nan|
|      25620|        nan|
|      25620|        nan|
|      25620|   LOTTERIA|
|      25620|   LOTTERIA|
|      25620|  STARBUCKS|
+-----------+-----------+
only showing top 20 rows

然后我尝试仅查询列

In[76]:  spDF['name']
Out[76]: Column<b'name'>

但是当我展示给他们时,我遇到了以下错误。
In[79]: spDF['name'].show()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-79-f6676d5e5ca2> in <module>()
----> 1 spDF['name'].show()

TypeError: 'Column' object is not callable

有人知道这个错误是什么吗?

2个回答

12

尝试一下:

使用 spDF.select('列名').show()


我在遇到类似错误时偶然发现了这个。Chandan Ray提供的答案是正确的。回答OP最初的问题,为什么会出现这种情况?我认为这是因为括号表示法返回一个Column对象,而Column对象没有定义show()方法。show()方法仅为Dataframe对象定义,这就是为什么spDF.select().show()有效,因为select()也返回另一个Dataframe对象。 - rp1

2

你也可以尝试以下方法:

import pyspark
from pyspark.sql import SparkSession

sc = pyspark.SparkContext('local[*]')
spark = SparkSession.builder.getOrCreate()
.
.
.
spDF.createOrReplaceTempView("space")
spark.sql("SELECT name FROM space").show()

这两行代码是可选的,在本地机器上尝试此片段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接