spark sql自定义UDF函数-java语言
背景说明
基于spark sql开发过程中,需要一些类似与官网提供的 int()、from_json()等自定函数处理数据。下属将简单讲解通过java如何实现spark sql自定义函数
官方UDF接口说明
官方提供了0-22 UDF接口,UDF0代表无参数输入只有返回参数,UDF1接口表示有一个入参,含义以此类推
UDF1官方接口说明
package org.apache.spark.sql.api.java;import java.io.Serializable;
import org.apache.spark.annotation.InterfaceStability.Stable;@Stable
public interface UDF2<T1, T2, R> extends Serializable {R call(T1 var1, T2 var2) throws Exception;
}
UDF2<T1, T2, R> :T1代表第一个输入参数类型,T2代表第二个输入参数类型,R代表返回参数类型
实现案例
将下属数据在spark sql里面实现 logs.age=age_01 的数据找到一条返回name名称。
在spark sql里面的虚拟表名称为 logs_view
{"age_01": 20,"logs": [{"age": 20,"name": "悠悠球"},{"age": 21,"name": "棒棒冰"}]
}
实现代码
import org.apache.spark.sql.api.java.UDF2;
import org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema;
import scala.collection.mutable.WrappedArray;public class GetLogAge implements UDF2<WrappedArray, Integer, String> {@Overridepublic Long call(WrappedArray logs, Integer age_01) throws Exception {for(int z=0; z<logs.size(); z++){GenericRowWithSchema log = (GenericRowWithSchema)dependUnits.apply(z);long age_ = log.getAs("age");if(age_ == age_01){return log.getAs("name");}}return "";}}
注册函数
sqlContext.udf().register("get_logs_name", new GetLogAge(),DataTypes.StringType);
调用
sqlContext.sql("select age_01,logs, get_logs_name(logs, age_01) as name from logs_view ").show()
spark sql自定义UDF函数-java语言相关推荐
- sprk sql自定义UDF函数
1 自定义UDF函数与scala定义函数的方式是一样的(也可以定义方法,调用的时候转换为函数即可) 2 自定义的函数需要注册后才能使用,注册的方式为 session.udf.register(自定义名 ...
- spark SQL自定义函数:
spark SQL 自定义函数: 自定义函数: 第一种: U D F (用户自定义函数)函数 特点: 一对一的关系,输入一个值以后输出一个值 (一进一出) 大部分的内置函数都是U D F函数 ...
- Spark SQL自定义函数_第五章
1.自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 1.UDF(User-Defined-Function) 输 ...
- Spark SQL自定义函数
文章目录 自定义函数分类 自定义UDF 自定义UDAF[了解] 自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 ...
- java调mongodb自定义函数,自定义UDF函数,从hive保存到mongodb
(可以通过idea工具调试UDF函数,第二步中会提供参考) 一.自定义UDF函数: 1.首先是pom.xml文件 xmlns:xsi="http://www.w3.org/2001/XMLS ...
- Spark SQL 中UDF的讲解
Spark SQL 中UDF的讲解 User Define Function, 用户自定义函数,简称UDF,存在与很多组件中. 在使用Sparksql的人都遇到了Sparksql所支持的函数太少了的难 ...
- Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
函数 系统内置函数 1.查看系统自带的函数 show functuions; 2.显示自带的函数的用法 desc function month; 3.详细显示自带的函数的用法 desc functio ...
- hive 转拼音udf_自定义UDF函数:将汉字转换成拼音
工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...
- 自定义UDF函数:将汉字转换成拼音
工作需求要讲汉字转换成拼音,自定义UDF函数 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...
最新文章
- python数据分析面试_python数据分析面试
- apache开源项目--Sirona
- deepin终端编译c程序_Deepin Linux安装使用Visual Studio Code(VSCode)调试C++
- BZOJ2535 [Noi2010]Plane 航空管制 【贪心 + 堆】
- 《孩子,你如此优美:一位作家母亲的家教笔记》
- Python之数据分析(星期均值、星期汇总、Numpy的take与where方法、apply_along_axis函数)
- Javascript:获取点击的li标签内部文字
- 合肥工业大学计算机学院王院长,合肥工业大学计算机与信息学院硕士研究生导师介绍:唐益明...
- 深入理解javascript原型和闭包系列
- C++ 五课时入门教学
- 阉割版BeagleBone Black从SD卡运行Debain操作系统
- 数字证书如何写入到ukey_ukey身份认证步骤
- 连点器android版本,连点器安卓手机版
- Android Studio插件GsonFormat快速实现JavaBean
- latex编译报错:Font ntx-Regular- tlf-ot1r at 438 not found
- [技术随笔(一)] 文件分割的两种方法
- 百度云不限速下载最新破解真好用
- 软件过程的价值观、原则以及实践——从敏捷说起
- 乡愁 - 怀念老者余光中
- inline-block是什么意思