我一直在寻找一段时间,但我还没有找到如何做到这一点。 我有一个包含一个参照表,其中一列包含字符串从数据框的火花过滤器列与集合中的单词
dataframe schema: name string,lastname string, interests string
我有像这样的兴趣列表中的数据框:
val sports:List [String] = List("football","basketball","soccer")
我想所有的人筛选从我的数据框中包含的运动之一以上符合他们的利益
val peopledata = sqlContext.sql("select * from learning.people")
我试图做到这一点是这样的:
for (sport <- sports)peopledata.filter(peopledata("interests").contains(sport))
,但我曾问一个亲在我公司工作,他告诉我他在那里一个更好,更漂亮的方式做到这一点
它说,它需要一个int,它返回一个字符串 – SparkHelpPlease
@SparkHelpPlease哎呀,固定我的答案 –
我发布一个答案,然后实现它有个bug,因此删除它,但需要提到的是,通过执行“collect”,您将会将所有的人员数据传送到您的驱动程序,只要它适合您的驱动程序的内存,这可能没问题。另一种解决方法是'广播''sports'并在'peopleData'' DataFrame'上做过滤器。恐怕我没时间了,但是如果问题仍然存在,我会稍后再回来查看并发布一个解决方案:) – ImDarrenG