Я хотел бы знать, как вызвать функцию UDF из функции доменного языка (DSL) в Spark SQL с использованием JAVA.
У меня есть функция UDF (например):
UDF2 equals = new UDF2<String, String, Boolean>() {
@Override
public Boolean call(String first, String second) throws Exception {
return first.equals(second);
}
};
Я зарегистрировал его в sqlContext
sqlContext.udf().register("equals", equals, DataTypes.BooleanType);
Когда я запускаю следующий запрос, вызывается мой UDF, и я получаю результат.
sqlContext.sql("SELECT p0.value FROM values p0 WHERE equals(p0.value, 'someString')");
Я бы преобразовал этот запрос, используя функции предметно-ориентированного языка в Spark SQL, и я не уверен, как это сделать.
valuesDF.select("value").where(???);
Я обнаружил, что существует функция callUDF(), одним из параметров которой является функция Function2 fnctn, но не UDF2. Как я могу использовать UDF и функции из DSL?