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

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

package UDF_UDAF

import java.util

import org.apache.spark.sql.{RowFactory, SparkSession}
import org.apache.spark.SparkConf
import org.apache.spark.sql.api.java.UDF1
import org.apache.spark.sql.types.{DataTypes, StructField}

// 自定义一个继承自 UDF1(或UDF2,UDF3,UDF4...)的类
class UDF extends UDF1[String,Int]{
override def call(t1: String): Int = {
t1.length
}
} object UDF{
def main(args: Array[String]): Unit = {
val warehouseLocation = "/code/VersionTest/spark-warehouse" //必须是相对路径
val conf = new SparkConf().setMaster("local").setAppName("udf")
val sparkSession = SparkSession.builder()
.config(conf)
.config("spark.sql.warehouse.dir", warehouseLocation) //设置warehouse
.getOrCreate()
val sc = sparkSession.sparkContext val parallize = sc.parallelize(Array("zhangsan","lisi","wangwu"))
val rowRDD = parallize.map(s=>RowFactory.create(s)) val fields = new util.ArrayList[StructField]()
fields.add(DataTypes.createStructField("name",DataTypes.StringType,true))
val schema = DataTypes.createStructType(fields) val df = sqlSession.createDataFrame(rowRDD, schema) df.createOrReplaceTempView("user") sparkSession.udf.register("StrLen", new UDF(),DataTypes.IntegerType) sparkSession.sql("select name, StrLen(name) as length from user").show() sparkSession.stop()
}
}

结果

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. 【洛谷P1090 合并果子】

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  2. 关于vue-router 中参数传递的那些坑(params,query)

    1.query方式传参和接受参数 传参 this.$router.push({ path:'/xxx' query:{ idname:id } })接收的方式:this.$route.query.id ...

  3. CMake快速入门

    参考: https://www.hahack.com/codes/cmake/ 1. 单目标文件 main.c #include <stdio.h> #include <stdlib ...

  4. Visual Studio 使用 Web Deploy 发布远程站点

    Ø  简介 本文介绍 Visual Studio 如何使用 Web Deploy发布远程站点,有时候我们开发完某个功能时,需要快速将更改发布至服务器.通常 Visual Studio 可以采用两种方式 ...

  5. Microsoft Internet Explorer v11 / XML External EntityInjection 0day

    [+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org[+] Source:  http://hyp3 ...

  6. hdu5974 A Simple Math Problem(数学)

    题目链接 大意:给你两个数X,YX,YX,Y,让你找两个数a,ba,ba,b,满足a+b=X,lcm(a,b)=Ya+b=X,lcm(a,b)=Ya+b=X,lcm(a,b)=Y. 思路:枚举gcd( ...

  7. vue项目的常用配置代码

    { // 针对vue的格式化配置----依赖eslint.prettier.vetur等插件 // 强制单引号 "prettier.singleQuote": true, &quo ...

  8. python2编码问题

    前言:python3解决了编码的问题,但python2还存在很多编码问题,用P2写爬虫爬了网页,解析时常有不同字符混着编码,导致解码问题成为爬虫程序员的噩梦... 但咱们要用robot framewo ...

  9. dotnet core使用开源组件FastHttpApi进行web应用开发(转)

      FastHttpApi相对于asp.net mvc来说有着更轻量和性能上的优势,性能上面就不在这里介绍了(具体可查看 https://github.com/IKende/FastHttpApi). ...

  10. c++消息队列的实现

      #ifndef NET_FRAME_CONCURRENT_QUEUE_H #define NET_FRAME_CONCURRENT_QUEUE_H #include <queue> # ...