我有一个名为'all_tweets'的sql数据帧,它只有一个列文本。
%= form_for @product, :html => {:multipart => true} do |p| %>
<div class="block margin_top">
<%= p.fields_for(:images, html: { multipart: true, id: "images",class: "dropzone"}) do |i| %>
<div class="fallback">
<%= i.file_field :photo %><br>
<%= i.submit "Save" %>
</div>
<% end %>
</div>
现在,我正在将此数据帧转换为RDD,以对其执行一些转换和操作。
all_tweets.show(5)
+--------------------+
| text|
+--------------------+
|@always_nidhi @Yo...|
|@OnlyDancers Bell...|
|Taste of Iceland!...|
|Serasi ade haha @...|
|@BeezyDH_ it's li...|
+--------------------+
only showing top 5 rows
现在,我正在尝试在其上运行flatMap,将句子分成单词。
[I] all_twt_rdd = all_tweets.rdd
[I] type(all_twt_rdd)
[O] pyspark.rdd.RDD
[I] all_twt_rdd.first()
[O] Row(text=u'@always_nidhi @YouTube no i dnt understand bt i loved the music nd their dance awesome all the song of this mve is rocking')
当我运行上述内容时,我收到以下错误。 RDD有数据。但我不明白为什么它会出错。流水线RDD是否继承了RDD的功能?
[I] user_cnt = all_twt_rdd.flatMap(lambda line: line.split(" ")).take(5)
答案 0 :(得分:2)
问题是您在.split()
上调用Row
,而不是字符串。行对象没有.split()
方法 - 只有字符串。您想要拆分其text
属性,因此请明确调用它:
user_cnt = all_twt_rdd.flatMap(lambda line: line.text.split(" ")).take(5)