动态构建Spark过滤器查询

时间:2017-03-27 14:24:01

标签: apache-spark apache-spark-dataset

我在地图中有多个条目(列名,值)。现在我想过滤一个具有列名称的数据集,这个列名称是将地图作为键,该值定义了数据集的特定列名称应具有的值。

例如,数据集包含列(a,b,c),而地图包含条目{(a,1),(b,2)}

现在我想过滤数据集,其中a为1,b为2。

使用java在spark中实现此目的的方法是什么?

1 个答案:

答案 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)