SparkSQL之UDF使用
Posted Runner_Jack
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SparkSQL之UDF使用相关的知识,希望对你有一定的参考价值。
package cn.piesat.test
import org.apache.spark.sql.SparkSession
import scala.collection.mutable.ArrayBuffer
object SparkSQLTest {
def main(args: Array[String]): Unit = {
val spark=SparkSession.builder().appName("sparkSql").master("local[4]")
.config("spark.serializer","org.apache.spark.serializer.KryoSerializer").getOrCreate()
val sc=spark.sparkContext
val sqlContext=spark.sqlContext
val workerRDD=sc.textFile("F://Workers.txt").mapPartitions(itor=>{
val array=new ArrayBuffer[Worker]()
while(itor.hasNext){
val splited=itor.next().split(",")
array.append(new Worker(splited(0),splited(2).toInt,splited(2)))
}
array.toIterator
})
import spark.implicits._
//注册UDF
spark.udf.register("strLen",(str:String,addr:String)=>str.length+addr.length)
val workDS=workerRDD.toDS()
workDS.createOrReplaceTempView("worker")
val resultDF=spark.sql("select strLen(name,addr) from worker")
val resultDS=resultDF.as("WO")
resultDS.show()
spark.stop()
}
}
以上是关于SparkSQL之UDF使用的主要内容,如果未能解决你的问题,请参考以下文章
用于日期操作的 SparkSQL (Spark 1.3) UDF
Spark篇---SparkSQL中自定义UDF和UDAF,开窗函数的应用