2016-09-07 171 views
0
from pyspark.sql.functions import split, explode 

sheshakespeareDF = sqlContext.read.text(fileName).select(removePunctuation(col('value'))) 

shakespeareDF.show(15, truncate=False) 

数据框看起来是这样的:字数: '列' 对象不是可调用

enter image description here

ss = split(shakespeareDF.sentence," ") 
shakeWordsDFa =explode(ss) 

shakeWordsDF_S=sqlContext.createDataFrame(shakeWordsDFa,'word') 

任何想法,我究竟做错了什么?提示说Column is not iterable

我该怎么办?我只想将shakeWordsDFa更改为数据框并重命名。

+1

这是CS110X HW来自edx – eliasah

回答

2

只需使用选择:

shakespeareDF = sc.parallelize([ 
    ("from fairest creatures we desire increase",), 
    ("that thereby beautys rose might never die",), 
]).toDF(["sentence"]) 

(shakespeareDF 
    .select(explode(split("sentence", " ")).alias("word")) 
    .show(4)) 

## +---------+ 
## |  word| 
## +---------+ 
## |  from| 
## | fairest| 
## |creatures| 
## |  we| 
## +---------+ 
## only showing top 4 rows 

星火SQL列不是数据结构。没有绑定到数据,只有在特定的DataFrame的环境中进行评估时才有意义。这种方式Columns表现得更像功能。

+0

很好的解释 – cdarlint