我正在使用Spark SQL,UDF用于计算ArrayType
类型的列
在性能方面,最快的输出类型是什么?
Spark接受任何特质Seq
的实现,但我认为它由WrappedArray
(在钨中)内部表示。
所以我想知道返回Array
而不是Vector
是否更好,以避免某些编码。
答案 0 :(得分:1)
我认为它在内部由WrappedArray(用钨)代表。
不是。 WrappedArray
(字面意思是Array
增强以适应scala.collection
API)是外部表示。内部表示(不包括基本类型)不依赖于标准的Scala API。
所以我想知道返回一个数组而不是一个Vector是否更好,以避免一些编码。
它不会有所作为。 udf
的输出是逐个元素完全编码的。无法避免返回值的完整副本。
如果无法使用(非常有限的)SQL API进行处理,那么您将无法使用所拥有的内容,直到Databricks开源高阶函数API。