Spark SQL UDF2的使用

Spark SQL 2.X 自定义udf 一、UDF介绍 UDF(User Define Function),即用户自定义函数。 几乎所有sql数据库的实现都为用户提供了扩展接口来增强sql语句的处理能力,这些扩展称之为UDXXX,即用户定义(User Define)的XXX,这个XXX可以是对单行操作的UDF,或者是对多行操作的UDAF,或者是UDTF,本次主要介绍UDF。 UDF的UD表示用户定义,既然有用户定义,就会有系统内建(... 阅读详情
Spark SQL  UDF2的使用
继续之前的UDF1进行说明:
UDF1博客地址 点击打开链接
与UDF1的区别在于两个参数:
需求: 获取文本中的两个数字 计算每行中数字的和
文本:
1,1
2,2
3,3
4,4
5,5
6,6
7,7
8,8
9,9
10,10
代码:
package com.bynear.spark_sql;

import java.util.ArrayList;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.api.java.UDF2;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
/**
 * 张建设
 * 2018/4/27
 * 15:41
 */
public class JavaUDF2 {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("JavaUDF2").setMaster("local");
        JavaSparkContext jsc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(jsc.sc());
        JavaRDD<String> numRDD = jsc.textFile("//Desktop//Spark//JavaUDF2.txt");
        JavaRDD<Row> numRowRDD = numRDD.map(new Function<String, Row>() {
            @Override
            public Row call(String line) throws Exception {
                String[] split = line.split(",");
                return RowFactory.create(Integer.valueOf(split[0]), Integer.valueOf(split[1]));
            }
        });
        ArrayList<StructField> fields = new ArrayList<StructField>();
        fields.add(DataTypes.createStructField("num1", DataTypes.IntegerType, true));
        fields.add(DataTypes.createStructField("num2", DataTypes.IntegerType, true));
        StructType structType = DataTypes.createStructType(fields);
        DataFrame numDF = sqlContext.createDataFrame(numRowRDD, structType);
        numDF.registerTempTable("table_num");
        sqlContext.udf().register("addSum", new UDF2<Integer, Integer, Integer>() {
            @Override
            public Integer call(Integer num1, Integer num2) throws Exception {
                return num1 + num2;
            }
        }, DataTypes.IntegerType);
        sqlContext.sql("select num1,num2 ,addSum(num1,num2) as Sum from table_num").show();
        System.out.println("第一次成功了");
        Row[] rows = sqlContext.sql("select num1,num2 ,addSum(num1,num2) as Sum from table_num").collect();
        for (Row row : rows) {
            System.out.println(row);
        }
        System.out.println("第二次成功了");

        jsc.stop();
    }
}
结果:
+----+----+---+
|num1|num2|Sum|
+----+----+---+
|   1|   1|  2|
|   2|   2|  4|
|   3|   3|  6|
|   4|   4|  8|
|   5|   5| 10|
|   6|   6| 12|
|   7|   7| 14|
|   8|   8| 16|
|   9|   9| 18|
|  10|  10| 20|
+----+----+---+
第一次成功了
[1,1,2]
[2,2,4]
[3,3,6]
[4,4,8]
[5,5,10]
[6,6,12]
[7,7,14]
[8,8,16]
[9,9,18]
[10,10,20]
第二次成功了


Spark立体全服务SQL鉴权 1、问题背景 在Zeppelin连接Spark实现SQLStdBasedAuthorization权限验证一文中说明了使用Zeppelin的jdbc解析器连接Spark Thriftserver的鉴权处理方案,解决通过Thriftserver使用Spark sql的权限问题。 要让Spark全方位提供给不同层次用户使用,开放的使用接口除了Thriftserver(jdbc接口),还有Spark... 阅读详情

相关推荐

UDF 2.5文件系统

蓝光光盘使用的文件系统 UDF 2.5. 我在开发3D特性的时候参考过得,非常有用

汉字转换缩写

提取首字母

weixin_45229647的博客 529

eDP、DP与HDMI——现代显示接口的核心解析

eDP、DP和HDMI各有千秋:eDP以嵌入式设备的低功耗见长,DP凭借开放生态和高带宽成为专业领域首选,而HDMI则依靠庞大的消费电子生态稳居家庭市场。未来,随着Type-C接口的普及和超高清内容的爆发,三者的技术边界可能进一步融合,但各自的核心优势仍将长期共存。对于用户而言,选择接口需基于设备需求——游戏玩家青睐HDMI的VRR,设计师依赖DP的多屏扩展,而轻薄本则离不开eDP的紧凑设计。

麟的博客 8435

Spark SQL UDF 函数(二)

Spark udf 函数

hj1993的博客 311

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1079

变色龙哈希函数 Chameleon Hash 可变型区块链

哈希函数 Hash: 众所周知,区块链有着极其优秀的安全性就是因为其充分使用了哈希函数。 哈希简单用一句话来讲,就是:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原出原始字串。 哈希函数特征: 1. 对于任意m作为输入,得到输出的结果,很难找到另一个输入m'  (m'不等于m),使得m'的Hash结果也为同样的输出

新手村 1万+

sparkSQL中自定义函数——UDF

自定义函数是可以根据函数中参数的个数去选择哪一种函数(UDF1,UDF2...)  SparkConf conf = new SparkConf(); conf.setMaster("local"); conf.setAppName("udf"); JavaSparkContext sc = new JavaSparkContext(conf); SQLContext sqlContext =...

wyqwilliam的博客 609

TIMER-XL:突破长上下文限制的Transformer时序预测新范式

本文深入解析了清华大学提出的TIMER-XL模型,这是一种突破长上下文限制的Transformer时序预测新范式。它采用Decoder-only架构与补丁级生成技术,并创新性地引入TimeAttention机制,有效解决了传统模型在处理海量历史数据时面临的“上下文瓶颈”问题,显著提升了长序列预测的精度与稳定性。

weixin_28340315的博客 447

udf udaf udtf 的对比说明

1)udf:user defined function 特点:i:o=1:1 示例函数:md5,substring 应用场景:1:1的情况,比如md5... 实现方式:简单udf实现 extends UDF 方法名:evaluate 2)udaf: .........aggregation function 特点:i:o=n:1 示例函数:sum 实现方式:extends UD...

Griezmann_7的博客 918

RL调参侠之BipedalWalker BipedalWalkerHardcore SAC

前几天用PPO训练了个很一般的agent: RL调参侠之BipedalWalker PPO 我看SpinningUp上面说PPO和SAC是两个领域里各自的State_of_the_art的方法,所以就打算跑SAC试试看,之前因为Open AI Five的原因,一直感觉PPO很牛掰,实际上现在很多自动驾驶的算法也是用PPO在跑,毕竟有一个“必定能够提升期望”的理论保证在这里,我理解这对做项目很大的诱惑。 不过我跑出来的结果明显是SAC更好。 调参侠时间 策略熵的权重alpha用的0.2,我一开始没有看SAC的

weixin_48370148的博客 2101

JAVA + 海康威视SDK + FFmpeg+ SRS 实现海康威视摄像头二次开发

海康威视SDK接入方案摘要 本文介绍了使用海康威视官方SDK开发物联网平台摄像头接入功能的完整方案。系统采用Java后端集成HCNetSDK控制摄像头,通过FFmpeg将RTSP流转为RTMP推送到SRS流媒体服务器,前端基于HTTP-FLV协议实现视频播放。文章详细说明了开发准备工作,包括SDK下载、SRS部署、FFmpeg安装等关键步骤,并提供了数据库表设计和接口定义。核心部分展示了如何集成海康SDK,包括提取必要代码、加载DLL文件、配置打包插件等具体实现细节,最终形成了一套支持实时预览、回放和下载的

2401_83057947的博客 2267

Spark 2.4.0编程指南--Spark SQL UDF和UDAF

Spark 2.4.0编程指南--Spark SQL UDF和UDAF 更多资源 github: https://github.com/opensourceteams/spark-scala-maven-2.4.0 视频 Spark 2.4.0编程指南--Spark SQL UDF和U...

chongqueluo2709的博客 266

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

《QEMU/KVM源码分析与应用》读书笔记4 —— 第2章 QEMU基本组件(1)

phmatthaus的专栏 1476

SPARK-SQL 基础应用入门2 - udf函数,内置函数,createOrReplaceTempView等使用

import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; import org.apache.spark.sql.api.java.UDF2; import org.apache.spark.sql.types.DataTypes; public class test_25 { public static void main(Str.

小哇 508

触摸芯片RM1015B基本使用方法

RM1015B触摸芯片使用指南:该芯片采用4通道设计(实际使用3通道),通过I2C接口通信(设备地址0x2B)。硬件设计需注意中断/复位引脚复用,需上拉处理。软件配置包括初始化、中断处理和定时器扫描,通过设置各通道阈值(0-300W)调节灵敏度,值越小越灵敏。调试时可调用rm1015B_debug_func()输出波形数据。典型应用场景包括接近检测和手势识别,中断触发后需在8ms内响应。特别注意不同通道的寄存器映射关系及校准流程,确保检测准确性。

云淡风轻 180

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spark2升级为Spark3 UDF org.apache.spark.sql.AnalysisException: You‘re using untyped报错解决方案

Spark2升级Spark3 org.apache.spark.sql.AnalysisException: You're using untyped Scala UDF, which does not have the input type information User class threw exception: org.apache.spark.sql.AnalysisException: spark_catalog requires a single-part namespace,but got

qq_39285950的博客 1510

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

sql调用自定义函数_Spark SQL 2.X 自定义udf

一、UDF介绍UDF(User Define Function),即用户自定义函数。几乎所有sql数据库的实现都为用户提供了扩展接口来增强sql语句的处理能力,这些扩展称之为UDXXX,即用户定义(User Define)的XXX,这个XXX可以是对单行操作的UDF,或者是对多行操作的UDAF,或者是UDTF,本次主要介绍UDF。UDF的UD表示用户定义,既然有用户定义,就会有系统内建(built...

weixin_39617044的博客 291

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[2.5]详解spark sql用户自定义函数:UDF与UDAF

参考Spark官网 王家林DT大数据梦工厂场景上一篇文章已经介绍spark sql的窗口函数,并且了解到spark sql提供了丰富的内置函数供猿友们使用,辣为何还要用户自定义函数呢?实际的业务场景可能很负责,特别负责,内置函数hold不住,所以要spark sql提供了可扩展的内置函数接口:哥们,你的业务太变态了,我满足不了你,自己定义一个sql函数,该怎么折腾就怎么折腾! 例如,mysql数

Memory of Mr.Snail 1万+

SparkSQL UDF使用方法与原理详解

UDF是SQL中很常见的功能,但在Spark-1.6及之前的版本,只能创建临时UDF,不支持创建持久化的UDF,除非修改Spark源码。从Spark-2.0开始,SparkSQL终于支持持久化的UDF。本文基于当前最新的Spark-2.0.2版本,讲解SparkSQL中使用UDF和底层实现的原理。 1. 临时UDF 创建和使用方法: create temporary

悠悠的博客 1221

SPARK 2.4.0 学习笔记分享

SPARK 2.4.0 学习笔记分享 【本站点正在持续更新中......2018-12-26......】 微博: https://weibo.com/thinktothings SPARK 2.4.0 学习笔记分享(bilibili整套视频): https://www.bilibili.c...

chongqueluo2709的博客 255

Spark 读取和使用Hive Permanent Function 原理

Spark Function Register Spark 2.* UDF查找过程 // Spark 程序启动 object SparkSubmit : main(args) 0 = "--class" 1 = "org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver" 2 = "spark-internal" c...

半日闲的博客 853

Spark从入门到精通第十六课:Spark SQL的udf函数和udaf函数 && 开窗函数

UDF函数的使用 package com.lirong import org.apache.spark.sql.{DataFrame, SparkSession} /** * 本类主要演示udf函数的注册和使用 */ object SparkTest { def main(args: Array[String]): Unit = { val ss: SparkSess...

曹利荣的博客 634
上一篇: Spark SQL 中UDF的讲解
下一篇: SparkSQL中UDAF案例分析
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值