我是Scala的初学者。
我有一个包含2列的数据框:
第一个是日期,第二个是单词数组。
created_at:string
words:array
element:string
我希望只留下以'#'开头的单词
我希望在爆炸数组之前制作过滤器,因为大多数单词都不是以'#'开头
我没有找到修改数组列并应用类似过滤器(_。startsWith(“#”))的方法。
有可能吗?怎么样?
感谢的
皮尔
答案 0 :(得分:3)
您可以创建一个简单的UDF来过滤掉数组列中不需要的单词:
= form_for @user,
url: user_path,
html: { class: 'form-class', method: :post } do |f|
= f.text_field :name,
class: 'name-class'
= f.select :cars_ids,
options_from_collection_for_select(Car.all, :id, :name),
{},
{ multiple: true,
class: 'cars-class',
data: { placeholder: 'Select one ore more...' } }
= f.submit 'Register',
class: 'button-class'
答案 1 :(得分:0)
试试这个:
import org.apache.spark.sql.functions._
df.select(explode(col("words")).as("word"), col("created_at")).
where("word LIKE '#%'").
groupBy(col("created_at")).
agg(collect_set(col("word")).as("words")).
show