0
点赞
收藏
分享

微信扫一扫

SQL面试题-SparkSQL自定义UDF解析URL

编写 SparkSQL UDF 函数实现如下功能 请编写 UDF,功能是解析 url 并提取指定的 key 及其 value。url,key 为入参,value 为出参,url 的格式类似于:
http://test.cn/images/o.gif?pid=1&_t=1466417152472&module=mark&uid=6 161545&pageType=2&collection_id=1104&question_id=2430782&count= 0&action=body.click
编写 UDF 函数,例如:MyUDF(url,”collection_id”) ,返回 1104

package com.neu.streaming

import org.apache.spark.sql.SparkSession

/**
* @Author yqq
* @Date 2022/02/09 21:18
* @Version 1.0
* SparkSQL自定义UDF解析URL
*/
object SparkSQLEXP {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().master("local").appName("test").getOrCreate()
session.sparkContext.setLogLevel("Error")
val list = List[String](
"http://test.cn/images/o.gif?pid=1&_t=1466417152472&module=mark&uid=6161545&pageType=2&collection_id=1104&question_id=2430782&count=0&action=body.click"
)
import session.implicits._
list.toDF("url").createTempView("temp")
session.udf.register("myudf",(url:String,key:String)=>{
val arr: Array[String] = url.split("\\?")(1).split("&")
var value = ""
for (elem <- arr){
val kv: Array[String] = elem.split("=")
if(key.equals(kv(0))){
value = kv(1)
}
}
value
})
session.sql(
"""
|select myudf(url,"collection_id") as v from temp
|""".stripMargin).show()
}
}

SQL面试题-SparkSQL自定义UDF解析URL_database


举报

相关推荐

0 条评论