title: Spark UDAF: java.lang.InternalError: Malformed class name
body: <p>I am using Spark 1.5.0 from CDH 5.5.2 distro. I switched to Scala 2.10.5 from 2.10.4. I am using the following code for UDAF. Is this somehow String vs UTF8String issue? If yes, any help will be greatly appreciated.</p>
  
  <pre><code>object GroupConcat extends UserDefinedAggregateFunction {
      def inputSchema = new StructType().add("x", StringType)
      def bufferSchema = new StructType().add("buff", ArrayType(StringType))
      def dataType = StringType
      def deterministic = true 
  
      def initialize(buffer: MutableAggregationBuffer) = {
        buffer.update(0, ArrayBuffer.empty[String])
      }
  
      def update(buffer: MutableAggregationBuffer, input: Row) = {
        if (!input.isNullAt(0)) 
          buffer.update(0, buffer.getSeq[String](0) :+ input.getString(0))
      }
  
      def merge(buffer1: MutableAggregationBuffer, buffer2: Row) = {
        buffer1.update(0, buffer1.getSeq[String](0) ++ buffer2.getSeq[String](0))
      }
  
      def evaluate(buffer: Row) = UTF8String.fromString(
        buffer.getSeq[String](0).mkString(","))
  }
  </code></pre>
  
  <p>However, I get this error message at runtime:</p>
  
  <pre><code>Exception in thread "main" java.lang.InternalError: Malformed class name
  at java.lang.Class.getSimpleName(Class.java:1190)
  at org.apache.spark.sql.execution.aggregate.ScalaUDAF.toString(udaf.scala:464)
  at java.lang.String.valueOf(String.java:2847)
  at java.lang.StringBuilder.append(StringBuilder.java:128)
  at scala.StringContext.standardInterpolator(StringContext.scala:122)
  at scala.StringContext.s(StringContext.scala:90)
  at org.apache.spark.sql.catalyst.expressions.aggregate.AggregateExpression2.toString(interfaces.scala:96)
  at org.apache.spark.sql.catalyst.expressions.Expression.prettyString(Expression.scala:174)
  at org.apache.spark.sql.GroupedData$$anonfun$1.apply(GroupedData.scala:86)
  at org.apache.spark.sql.GroupedData$$anonfun$1.apply(GroupedData.scala:80)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
  at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
  at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
  at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
  at scala.collection.AbstractTraversable.map(Traversable.scala:105)
  at org.apache.spark.sql.GroupedData.toDF(GroupedData.scala:80)
  at org.apache.spark.sql.GroupedData.agg(GroupedData.scala:227)
  </code></pre>