首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过定义UDAF产生的Spark-sql错误

通过定义UDAF产生的Spark-sql错误
EN

Stack Overflow用户
提问于 2016-03-07 05:10:38
回答 1查看 734关注 0票数 0

Spark version 1.6.0 on AWS EMR with Zeppelin Notebook

我用以下代码定义了一个UDAF:

代码语言:javascript
复制
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row;
import org.apache.spark.sql.expressions.MutableAggregationBuffer
import org.apache.spark.sql.expressions.UserDefinedAggregateFunction

import java.text.SimpleDateFormat
import java.util.Date

class AggregateTS extends UserDefinedAggregateFunction{
    def inputSchema: StructType = StructType(StructField("input", StringType) :: Nil)

    def bufferSchema: StructType = StructType(StructField("intermediate", StringType)::Nil)

    def dataType: DataType = StringType

    def deterministic: Boolean = true

    def initialize(buffer: MutableAggregationBuffer): Unit = {
        buffer(0) = "Init"
    }

    def update(buffer: MutableAggregationBuffer, input: Row): Unit = {
        if (buffer.getAs[String](0) == "Init"){
            buffer(0) = input.getAs[String](0)
        }
        else{
            // add two string
            buffer(0) = average_ts(input.getAs[String](0), buffer.getAs[String](0))
        }
    }

    def merge(buffer1: MutableAggregationBuffer, buffer2:Row):Unit = {
        buffer1(0) = average_ts(buffer1.getAs[String](0), buffer2.getAs[String](0))
    }

    def evaluate(buffer: Row): Any = {
        buffer.getAs[String](0)
    }
}

从中我得到了一个编译错误:

代码语言:javascript
复制
error: not found: type DataType
       def dataType: DataType = StringType

这是什么意思?

EN

回答 1

Stack Overflow用户

发布于 2016-03-08 21:42:03

我自己解决的。这似乎是一些导入冲突错误。我将导入语句更改为显式

代码语言:javascript
复制
import org.apache.spark.sql.types.{DataType}

然后它就能工作了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35832624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档