【发布时间】:2017-01-25 22:38:37
【问题描述】:
我正在使用 Scala + Spark 2.0 并尝试编写一个 UDAF,其中包含一个元组数组作为其内部缓冲区以及它的返回类型: ...
def bufferSchema = new StructType().add("midResults", ArrayType( StructType(Array(StructField("a", DoubleType),StructField("b", DoubleType))) ))
def dataType: DataType = ArrayType( StructType(Array(StructField( "a", DoubleType),StructField("b", DoubleType))) )
这就是我更新缓冲区的方式
def update(buffer: MutableAggregationBuffer, input: Row) = {
buffer(0) = buffer.getAs[mutable.WrappedArray[(Double,Double)]](3) ++ Array((3.0,4.0))
}
但我得到以下异常:
java.lang.ArrayStoreException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema
如果我有一个简单的 Double 数组,则此模式有效..
【问题讨论】:
标签: arrays scala apache-spark aggregate-functions user-defined-functions