我有一个用scala写的dataframe a2:
val a3 = a2.select(printme.apply(col(“PlayerReference”)))列PlayerReference包含一个字符串。
调用udf函数的方法:
val printme = udf({
st: String =>
val x = new JustPrint(st)
x.printMe();
})此udf函数调用java类:
public class JustPrint {
private String ss = null;
public JustPrint(String ss) {
this.ss = ss;
}
public void printMe() {
System.out.println("Value : " + this.ss);
}
}但是我对udf有这样的错误:
java.lang.UnsupportedOperationException: Schema for type Unit is not supported本练习的目标是验证调用链。我应该怎么做才能解决这个问题?
发布于 2020-12-03 14:25:12
你得到这个错误的原因是你的UDF没有返回任何东西,就spark而言,它被称为Unit。
您应该做什么取决于您实际想要什么,但是,假设您只想跟踪通过UDF传入的值,那么您应该更改printMe,使其返回字符串,或者更改UDF。如下所示:
public String printMe() {
System.out.println("Value : " + this.ss);
return this.ss;
}或者像这样:
val printme = udf({
st: String =>
val x = new JustPrint(st)
x.printMe();
x
})https://stackoverflow.com/questions/65118421
复制相似问题