繁体   English   中英

Spark Notebook:如何根据列值(其中每个列单元格都是字符串数组)过滤行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM