文档章节

SparkSQLUDF自定义函数案例

别寒
 别寒
发布于 2017/07/31 14:28
字数 149
阅读 9
收藏 0
package com.hhb.spark.sql

import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.types.{StructField, _}

/**
  * Created by dell on 2017/7/31.
  */
object UDF {
  def main(args: Array[String]) {
    val conf = new SparkConf()
      .setAppName("UDF")
      .setMaster("local")
      .set("spark.testing.memory", "2147480000")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    // 构造模拟数据
    val names = Array("Leo", "Marry", "Jack", "Tom")
    val namesRDD = sc.parallelize(names, 5)
    val namesRowRDD = namesRDD.map{ name => Row(name) }
    val structType = StructType(Array(StructField("name", StringType, true)))
    val namesDF = sqlContext.createDataFrame(namesRowRDD, structType)

    // 注册一张names表
    namesDF.registerTempTable("names")

    // 定义和注册自定义函数
    // 定义函数:自己写匿名函数
    // 注册函数:sqlContext.usf.register()
    sqlContext.udf.register("strLen",(str: String) => str.length )

    // 使用自定义函数
    sqlContext.sql("select name, strLen(name) from names")
      .collect()
      .foreach(println)

  }
}

© 著作权归作者所有

共有 人打赏支持
别寒
粉丝 30
博文 270
码字总数 136713
作品 0
永州
程序员
php朝花夕拾之strlen mb_strlen的函数的区别

涉及到一个字符编码问题 gbk编码:一个汉字占两个字节 utf8编码:一个汉字占3个字节 案例: 面试题目: 关于汉字字符串的截取: 案例: 案例2: 注意,上个案例中,用自定义的函数计算字符串...

成越
2016/09/06
16
0
[android底层]jni中获取自定义的类函数编写

本案例中编写 android app中对应的jni函数 static native Student getStudent(); jni中获取自定义的类函数描述定向总结 定义一个char *指向自定义类 1、返回类型:jobject 2、获取自定义的类 ...

lilin9105
2014/06/05
0
0
类似 Spring 的开源框架 - JCute

JCute 是什么 jcue是一套功能类似Spring的开源框架,基于JDK1.6开发,实现了Spring的大部分功能,但用法相对Spring要简洁,整体采用注解方式,代码清晰,功能灵活,用户也可扩展基于xml文件或...

看-野生程序猿
04/15
0
0
AntDB重分布流程记录

案例1 概述 重分布前 重分布后 重分布CASE 重分布SQL 分片方式 分片函数 分片字段 分片节点 分片方式 分片函数 分片字段 分片节点 1、复制表重分布成复制表。 2、节点减少。 alter table t ...

Zaclu
01/30
1
0
Vue2.0笔记——自定义指令

自定义指令 自定义指令主要用于,除系统提供外,自己对DOM的底层操作。 例如当页面加载时需要将一个文本框为自动获得焦点。只要你在打开这个页面后还没点击过任何内容,这个输入框就应当还是...

逝岁月
04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
1
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
9
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0
OpenCV边缘检测算子原理总结及实现

1. 拉普拉斯算子 原理:是一种基于图像导数运算的高通线性滤波器。它通过二阶导数来度量图像函数的曲率。 拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉...

漫步当下
昨天
0
0
Spring源码阅读——1

开始读Spring源码吧,看再多的技术博客,不如自己看一下~~~~~ Spring源码目前在github中,新版本基于gradle构建。所以阅读源码需要先安装github和gradle。 spring中git地址 1、安装git(略)...

叶枫啦啦
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部