искровой фильтр с функцией более высокого порядка - PullRequest
0 голосов
/ 30 января 2019

Как мне получить функцию более высокого порядка в Scala для правильного принятия предиката искрового фильтра?Т.е.

val df = Seq(1,2,3,4).toDF("value")

df.filter(col("value")> 2).show
df.filter(col("value")< 2).show

работает просто отлично.Но когда я пытаюсь преобразовать его в функцию, которая принимает предикат фильтра (примечание: та же сигнатура, что и у оператора >), компилятор больше не находит левую / правую часть для отправки в предикат.

def myFilter =(predicate:Any =>Column)(df:DataFrame)= {
df.filter(col("value") predicate 2).show // WARN this does not compile
}

df.transform(myFilter(>)).show

Как это можно заставить работать?

1 Ответ

0 голосов
/ 30 января 2019

Объединение различных комментариев дает это как возможное решение:

def myFilter = (predicate: (Column, Int) => Column)(df: DataFrame) = {
  df.filter(predicate(col("value"), 2))
}

df.transform(myFilter(_ > _)).show
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...