首页 > 解决方案 > Spark SQL 2.3+ 是否支持 UDT?

问题描述

我正在查看这张票,不明白 Spark 是否支持任何语言(Scala、Python、Java、R)的 2.3+ 版本的 UDT?

我有这样的课

Class Test{        
    string name;
    int age;
}

我的 UDF 方法是:

public Test UDFMethod(string name, int age){           
       Test ob = new Test();
       ob.name = name;           
       ob.age = age; 
}

示例 Spark 查询

Select *, UDFMethod(name, age) From SomeTable;

现在UDFMethod(name, age)将返回 Test 对象。那么在使用SQLUserDefinedType标签和扩展UserDefinedType类之后,这会在 Spark SQL 中工作吗?

因为UserDefinedType类在 Spark 2.0 中是私有的。我只想知道 Spark 2.3+ 是否支持 UDT。如果是,最好使用什么UserDefinedTypeUDTRegisteration. 截至目前,两者都是私有的。

标签: apache-sparkapache-spark-sql

解决方案


如您所见,您链接的 JIRA 票已至少延迟到 Spark 3.0。因此,这意味着目前没有供公众使用的此类选项。

总是可以绕过访问限制(通过反射,通过将您自己的代码放在 Spark 命名空间中),但绝对不支持它,如果它在未来失败或中断,您不应该期待帮助。


推荐阅读