UDF即用户自定函数,注册之后,在sql语句中使用。

基于scala-sdk-2.10.7,Spark2.0.0。

  1. package UDF_UDAF
  2.  
  3. import java.util
  4.  
  5. import org.apache.spark.sql.{RowFactory, SparkSession}
  6. import org.apache.spark.SparkConf
  7. import org.apache.spark.sql.api.java.UDF1
  8. import org.apache.spark.sql.types.{DataTypes, StructField}

  9. // 自定义一个继承自 UDF1(或UDF2,UDF3,UDF4...)的类
  10. class UDF extends UDF1[String,Int]{
  11. override def call(t1: String): Int = {
  12. t1.length
  13. }
  14. }
  15.  
  16. object UDF{
  17. def main(args: Array[String]): Unit = {
  18. val warehouseLocation = "/code/VersionTest/spark-warehouse" //必须是相对路径
  19. val conf = new SparkConf().setMaster("local").setAppName("udf")
  20. val sparkSession = SparkSession.builder()
  21. .config(conf)
  22. .config("spark.sql.warehouse.dir", warehouseLocation) //设置warehouse
  23. .getOrCreate()
  24. val sc = sparkSession.sparkContext
  25.  
  26. val parallize = sc.parallelize(Array("zhangsan","lisi","wangwu"))
  27. val rowRDD = parallize.map(s=>RowFactory.create(s))
  28.  
  29. val fields = new util.ArrayList[StructField]()
  30. fields.add(DataTypes.createStructField("name",DataTypes.StringType,true))
  31. val schema = DataTypes.createStructType(fields)
  32.  
  33. val df = sqlSession.createDataFrame(rowRDD, schema)
  34.  
  35. df.createOrReplaceTempView("user")
  36.  
  37. sparkSession.udf.register("StrLen", new UDF(),DataTypes.IntegerType)
  38.  
  39. sparkSession.sql("select name, StrLen(name) as length from user").show()
  40.  
  41. sparkSession.stop()
  42. }
  43. }

结果

Spark SQL UDF示例的更多相关文章

  1. 转】 Spark SQL UDF使用

    原博文出自于: http://blog.csdn.net/oopsoom/article/details/39401391 感谢! Spark1.1推出了Uer Define Function功能,用 ...

  2. Spark SQL UDAF示例

    UDAF:用户自定义聚合函数 Scala 2.10.7,spark 2.0.0 package UDF_UDAF import java.util import org.apache.spark.Sp ...

  3. Spark学习之Spark SQL

    一.简介 Spark SQL 提供了以下三大功能. (1) Spark SQL 可以从各种结构化数据源(例如 JSON.Hive.Parquet 等)中读取数据. (2) Spark SQL 不仅支持 ...

  4. Spark SQL External DataSource简介

    随着Spark1.2的发布,Spark SQL开始正式支持外部数据源.这使得Spark SQL支持了更多的类型数据源,如json, parquet, avro, csv格式.只要我们愿意,我们可以开发 ...

  5. 6. Spark SQL和Beeline

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第六部分是讲的是Spark SQL和Beeline. Spark SQL是Spark用来操作结构化和半结构化数据的接口. 一. ...

  6. Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)

    在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...

  7. Spark注册UDF函数,用于DataFrame DSL or SQL

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ object Test2 { def ...

  8. 十一、spark SQL的scala示例

    简介 spark SQL官网:http://spark.apache.org/docs/latest/sql-programming-guide.html sparkSQL是构建在sparkCore之 ...

  9. 二、spark SQL交互scala操作示例

    一.安装spark spark SQL是spark的一个功能模块,所以我们事先要安装配置spark,参考: https://www.cnblogs.com/lay2017/p/10006935.htm ...

随机推荐

  1. python1--计算机原理 操作系统 进制 内存分布

    本周内容   '''第一天: 计算机原理 操作系统  第二天: 编程语言 python入门:环境 - 编辑器 变量 基本数据类型 '''``` ## 学习方法 ```python'''鸡汤 - 干货 ...

  2. QPS从0到4000请求每秒,谈达达后台架构演化之路

    达达是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社会闲散人力资源,解决O2O最后三公里即时性配送难题(目前达达已经与京东到家合并). 达达业务主要包含 ...

  3. JGUI源码:实现简单MVVM单项绑定学习笔记(15)

    前面几节都是jquery界面方面的东西,本节研究些数据方面的东西:MVVM. MVVM由三部分组成:Model <=> ViewModel <=> View,当Model数据改 ...

  4. 11GR2 Oracle数据库的远程投毒VNCR方式修复

    [环境介绍] 系统环境:Solaris + Oracle 11GR2 + 单机/RAC   [背景描述] 基于集团数据库安全检查项,需要数据库的远程投毒漏洞进行修复. 根据Oracle官方提供的修复文 ...

  5. python2和python3的区别

    python2和python3的区别 参考链接:http://www.runoob.com/python/python-2x-3x.html 1.源码上的区别 python2 python3 源码不规 ...

  6. 2、搭建一个简单的Web项目

    一.创建一个Web项目: 1.File->new Project->Java->JavaEE->Web Application 2.为项目起名: 3.配置项目:在项目上击右键- ...

  7. python 学习 leetcode ---number of island

    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...

  8. Java多线程访问共享资源类及类之间关系设计

    1.涉及的类 多线程类.共享资源存储类 2.类之间的关系 (1)共享资源存储类作为线程类的全局成员变量,在线程初始化时,通过setter或者构造注入(当然此处是同一个共享资源类对象),实现多个线程共享 ...

  9. 虚拟机有QQ消息时宿主机自动弹窗提示

    因为是检测窗口实现的,所以要求设置会话窗口自动弹出,而且看完消息就把QQ消息窗口关掉... 虚拟机端 #! /usr/bin/env python # -*- coding: utf-8 -*- fr ...

  10. PyCharm(python的开发工具)的安装与破解

    最近在进行python的入门学习,俗话说:工欲善其事,必先利其器.最初学习时,一款好的IDE(Integrated Development Environment)绝对是很重要的,有利于后期学习,并且 ...