我在地图中有多个条目(列名,值)。现在我想过滤一个具有列名称的数据集,这个列名称是将地图作为键,该值定义了数据集的特定列名称应具有的值。
例如,数据集包含列(a,b,c),而地图包含条目{(a,1),(b,2)}
现在我想过滤数据集,其中a为1,b为2。
使用java在spark中实现此目的的方法是什么?
答案 0 :(得分:1)
如果数据集表示DataFrame,则Map值仅表示Ints, 可以使用这样的代码:
val parametersMap = Map("a" -> 1, "b" -> 2)
// condition: a=1 AND b=2
val condition = parametersMap.foldLeft("")((result, entry) => result + " AND " + entry._1 + "=" + entry._2).substring(4)
val result = dataFrame.filter(condition)