博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sparkSQL UDF创建
阅读量:6298 次
发布时间:2019-06-22

本文共 1721 字,大约阅读时间需要 5 分钟。

hot3.png

1.目的

    定义并使用sparkSQL UDF函数

2.元素

val product_order=Array(  ("20170909,tom"),  ("20170909,jack") ,  ("20170909,tom"),  ("20170910,tony"))

3.脚本

/**  * Created by puwenchao on 2017-09-26.  */import org.apache.log4j.{Level, Logger}import org.apache.spark.sql.types.{StringType, StructField, StructType}import org.apache.spark.sql.{Row, SQLContext}import org.apache.spark.{SparkConf, SparkContext}object udf{  def main(args: Array[String]) {    //屏蔽日志    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)    //生成sc\ssc    val sparkConf=new SparkConf().setAppName("udf").setMaster("local")    val sc=new SparkContext(sparkConf)    val sqlContext=new SQLContext(sc)    // 1.创建RDD并转化为Row RDD    val product_order=Array(      ("20170909,tom"),      ("20170909,jack") ,      ("20170909,tom"),      ("20170910,tony")    )    val product_orderRDD=sc.parallelize(product_order,2)    val product_orderRowRDD= product_orderRDD.map(_.split(",")).map(log=>Row(log(0),log(1)))    // 2.构造元数据    val structType=StructType(Array(      StructField("time",StringType,true),      StructField("user",StringType,true)    ))    // 3.使用sqlContext创建dataframe    val product_orderDF=sqlContext.createDataFrame(product_orderRowRDD,structType)    // 4.注册成临时表    product_orderDF.registerTempTable("product_order")    //定义UDF    sqlContext.udf.register("strlen",(str:String)=>str.length)    //运用UDF    sqlContext.sql("select time,strlen(user) from product_order")      .rdd                  //DF转为Row RDD      .map(x=>(x(0),x(1)))  //Row RDD转为普通RDD      .foreach(println)  }}

4.输出

    (20170909,3)

    (20170909,4)
    (20170909,3)
    (20170910,4)

 

转载于:https://my.oschina.net/puwenchao/blog/1543735

你可能感兴趣的文章
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>
【Docker学习笔记(四)】通过Nginx镜像快速搭建静态网站
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
<转>云主机配置OpenStack使用spice的方法
查看>>
java jvm GC 各个区内存参数设置
查看>>
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
基于RBAC权限管理
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>