首页 > 解决方案 > 同时根据多个属性值过滤数据集?

问题描述

我有一个包含一系列属性、值字符串的数组,除了它的最后两个元素,如下所示:

 constraint =   ["ATT","ATTVAL","ATT","ATTVAL","ATT","ATTVAL",....,"NUMVALUE","NUMVALUE"]

我想同时根据所有这些过滤数据ATTATTVAL。对于一对夫妇ATTATTVALconstraint = ["ATT","ATTVAL","NUMVALUE","NUMVALUE"])代码将是:

dataset.select(dataset.col("*")).filter(col(constraint.get(0)).equalTo(lit(constraint.get(1))));

但是如何为阵列中的所有夫妻ATT做到这一点?ATTVAL我正在考虑FilterFunction在 JAVA 中实现这一点,我正在尝试类似以下内容:

for (int i = 1; i < constraints.size() - 2; i += 2)
                    dataset= dataset.filter(col(constraints.get(i-1)).isin(constraints.get(i)));

但不幸的是,它不会同时进行过滤。谢谢。

标签: javaapache-sparkapache-spark-sql

解决方案


推荐阅读