Apache spark e| // +----------+---------+ //|第一个|最后一个| //| First2 | Last2| // +----------+---------+

Apache spark e| // +----------+---------+ //|第一个|最后一个| //| First2 | Last2| // +----------+---------+,apache-spark,apache-spark-sql,user-defined-types,Apache Spark,Apache Spark Sql,User Defined Types,并为实际类型扩展(如内置的VectorUDT或可以从特定表示中受益的内容)保留UDT。堆栈溢出不允许我在此处添加太多注释,因此我将编辑原始帖子。我正在尝试创建一个UDT,正如Spark SQL白皮书中所解释的,第4.4.2节我的答案仍然是一样的。如果你想对属性进行操作,你必须使用自定义项。@zero323回答得很好,很简洁!我仍然不太使用UDT或UDF,但这个解决方案对我来说非常合理@andygrove据我所知,Spark SQL论文中没有任何内容建议您可以直接访问内部表示。相反,它将UDF描述

并为实际类型扩展(如内置的
VectorUDT
或可以从特定表示中受益的内容)保留UDT。

堆栈溢出不允许我在此处添加太多注释,因此我将编辑原始帖子。我正在尝试创建一个UDT,正如Spark SQL白皮书中所解释的,第4.4.2节我的答案仍然是一样的。如果你想对属性进行操作,你必须使用自定义项。@zero323回答得很好,很简洁!我仍然不太使用UDT或UDF,但这个解决方案对我来说非常合理@andygrove据我所知,Spark SQL论文中没有任何内容建议您可以直接访问内部表示。相反,它将UDF描述为访问UDT的方法。我们可以定义自定义UDT,但不能自由直接地使用它,这真的很糟糕。