Мне интересно, как настроить динамический c фильтр по неизвестным столбцам в Spark.
Например, кадр данных выглядит следующим образом:
+-------+-------+-------+-------+-------+-------+
| colA | colB | colC | colD | colE | colF |
+-------+-------+-------+-------+-------+-------+
| Red | Red | Red | Red | Red | Red |
| Red | Red | Red | Red | Red | Red |
| Red | Blue | Red | Red | Red | Red |
| Red | Red | Red | Red | Red | Red |
| Red | Red | Red | Red | Blue | Red |
| Red | Red | White | Red | Red | Red |
+-------+-------+-------+-------+-------+-------+
Столбцы могут быть только известный во время выполнения, то есть он может иметь colG, H .. Мне нужно проверить, является ли значение для всего столбца красным, а затем получить счет, в вышеприведенном случае 3, поскольку столбцы colA, colD и ColF имеют красный цвет.
То, что я делаю, это что-то вроде ниже, и это МЕДЛЕННО ..
val allColumns = df.columns
df.foldLeft(allColumns) {
(df, column) =>
val tmpDf = df.filter(df(column) === "Red")
if (tmpDf.rdd.isEmpty) {
count += 1
}
df
}
Мне интересно, есть ли лучший способ. Большое спасибо!