代码之家  ›  专栏  ›  技术社区  ›  Yann Moisan cmbaxter

UDF返回数组的更有效的输出类型是什么

  •  2
  • Yann Moisan cmbaxter  · 技术社区  · 6 年前

    我正在使用spark sql和一个udf来计算一个类型的列 ArrayType

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

    火花接受特性的任何实现 Seq 但我认为它的内部代表是 WrappedArray (变成钨)。

    所以我想知道是不是最好把 Array 而不是 Vector 例如,为了避免某些编码。

    1 回复  |  直到 6 年前
        1
  •  1
  •   user9863457    6 年前

    我认为它的内部表现是一个包裹物阵列(钨)。

    事实并非如此。 WrappedArray (字面意思是 Array 增加以适应 scala.collection api)是外部表示。内部表示(不包括基元类型)不依赖于标准的scala API。

    所以我想知道是否最好返回一个数组而不是向量,例如,为了避免某些编码。

    这不会有什么不同。输出来自 udf 是逐元素完全编码的。无法避免返回值的完整副本。

    如果无法使用(相当有限的)SQL API进行处理,那么您将一直使用现有的SQL API,直到更高阶的函数API被数据块打开。