![](/img/trans.png)
[英]How do I filter rows based on whether a column value is in a Set of Strings in a Spark DataFrame
[英]Spark Notebook: How can I filter rows based on a column value where each column cell is an array of strings?
我有一个巨大的数据框,其中“类别”列具有各种业务属性,即它是餐厅,洗衣服务,迪斯科舞厅等。我需要的是能够.filter
数据.filter
,使包含餐厅的每一行都可以可见。 这里的问题是“类别”是一个字符串数组,其中一个单元格可能类似于:“餐馆,美食,夜生活”。 有任何想法吗? (Scala [2.10.6] Spark [2.0.1] Hadoop [2.7.2])
我已经尝试过SQL样式查询,例如:
val countResult = sqlContext.sql(
"SELECT business.neighborhood, business.state, business.stars, business.categories
FROM business where business.categories == Restaurants group by business.state"
).collect()
display(countResult)
和
dfBusiness.filter($"categories" == "Restaurants").show()
和
dfBusiness.filter($"categories" == ["Restaurants"]).show()
我认为我可能需要遍历每个单元格,但是我不知道该怎么做。
有任何想法吗?
函数库对于处理DataFrame
列可能非常有帮助。 在这种情况下, array_contains
应该提供您所需要的:
dfBusiness.filter(array_contains($"categories", "Restaurants"))
这会过滤掉categories
列中数组中没有“ Restaurants ”元素的所有行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.