UDF返回数组的效率输出类型是什么?

时间:2018-05-29 09:26:27

标签: apache-spark apache-spark-sql

我正在使用Spark SQL,UDF用于计算ArrayType类型的列

在性能方面,最快的输出类型是什么?

Spark接受任何特质Seq的实现,但我认为它由WrappedArray(在钨中)内部表示。

所以我想知道返回Array而不是Vector是否更好,以避免某些编码。

1 个答案:

答案 0 :(得分:1)

  

我认为它在内部由WrappedArray(用钨)代表。

不是。 WrappedArray(字面意思是Array增强以适应scala.collection API)是外部表示。内部表示(不包括基本类型)不依赖于标准的Scala API。

  

所以我想知道返回一个数组而不是一个Vector是否更好,以避免一些编码。

它不会有所作为。 udf的输出是逐个元素完全编码的。无法避免返回值的完整副本。

如果无法使用(非常有限的)SQL API进行处理,那么您将无法使用所拥有的内容,直到Databricks开源高阶函数API。