Spark SQL 自定义函数UDF实现concat_ws

需求: 使用自定义函数,实现concat_ws功能

import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
object Myconcat_ws {
  def main(args: Array[String]): Unit = {

    val spark: SparkSession = SparkSession.builder().appName("naya").master("local[*]").getOrCreate()

    import spark.implicits._

    val ds: Dataset[(String, String, String)] = spark.createDataset(List(("北京市", "北京市", "昌平区"), ("广东省", "广州市", "南沙区"), ("河北省", "衡水市", "桃城区")))

    val df: DataFrame = ds.toDF("province", "city", "district")

   df.createTempView("v_location")
   //spark.sql("select concat_ws('|',province,city,district) location from v_location").show()

    //自定义函数  实现concat_ws的功能
    val func = (split :String,p1 :String, p2:String, p3:String) =>{
      p1 + split + p2 +split + p3
    }

    // 注册自定义函数,并起名
    spark.udf.register("MY_CONCAT_WS",func)

    spark.sql("select MY_CONCAT_WS('|',province,city,district) location from v_location").show()
    spark.stop()
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值