Spark sql で array_to_stringを自作する

やり方意外と簡単でした。

 

参考したページは

Using SparkSQL UDFs to Create Date Times in Spark 1.5

 

scala> import org.apache.spark.sql.functions.udf

scala> def arrayToString(array:Seq[String],separator:String) = array.mkString(separator)

scala> sqlContext.udf.register("array_to_string", arrayToString(_:Seq[String],_:String))

scala> sqlContext.sql("select array_to_string(array('aaa','bbb'),'@') x").collect.foreach(println)
[aaa@bbb]

ちゃんと動いた