045 介绍UDF,以及完成大小写的转换
一:概述
1.UDF
用户自定义函数,用java实现自定义的需求
User Defined Function-----UDF。
2.UDF的类型
udf:一进一出
udaf:多进一出
udtf:一进多出
3.udf的实现步骤
继承UDF类
实现evaluate的方法
所有的方法都必须有返回值
推荐使用Text,LongWritable等类型
二:配置准备
1.导入新的包括hive的jar包
需要新的本地repository库。
然后在eclipse中选择更新。
在windows下新建maven工程。

2.修改pom.xml中的依赖,
主要是增加hive的依赖,当然hadoop依赖必须有。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.cj.it</groupId>
<artifactId>hiveUdf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>hiveUdf</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>0.13.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>0.13.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
三:程序完成
1.需求
大小写的转换
0:表示转换为小写
1:表示转换为大写
默认是转换为小写
2.程序讲解

3.源代码
package com.cj.it.hiveUdf; import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text; public class UdfTest extends UDF {
public Text evaluate(Text str) {
return evaluate(str, new IntWritable(0));
} public Text evaluate(Text str, IntWritable flag) {
if (str != null) {
if (flag.get() == 0) {
return new Text(str.toString().toLowerCase());
}
if (flag.get() == 1) {
return new Text(str.toString().toUpperCase());
}
return null;
}
return null;
} public static void main(String[] args) {
System.out.println(new UdfTest().evaluate(new Text("asssf"), new IntWritable(1)));
}
}
4.运行效果

四:导出
1.Export

2.jar

五:上传到hive
1.先上传到datas目录下

2.启动hadoop

3.启动hive

4.关联jarbao

5.创建方法

6.使用

045 介绍UDF,以及完成大小写的转换的更多相关文章
- 介绍UDF,以及完成大小写的转换
一:概述 1.UDF 用户自定义函数,用java实现自定义的需求 2.UDF的类型 udf:一进一出 udaf:多进一出 udtf:一进多出 3.udf的实现步骤 继承UDF类 实现evaluate的 ...
- R语言大小写字母转换
#R语言大小写字母转换 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com http://blog.sciencenet.cn/u/Bearjazz R语言有很丰富的 ...
- js字母大小写字母转换
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- c# 字符串大小写混合转换
我是个.net萌新,在大学是计算机应用专业 学的比较杂 出来准备走net方向 培训了两个月了 今天被出了一道上机题 题本来是挺简单的 输入一个字符 如果是大写则转换为小写 如果是小写则转换为大 ...
- java---金额中文大小写实时转换小程序
本例演示一个String图形用户界面的完整应用程序,包括输入数据, 显示结果,响应事件以及异常处理. 输入一个实数表示金额,每次输入时显示该金额的中文大小写形式,运行窗口见最后. 在窗口中," ...
- c语言字符串大小写字母转换
输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一 ...
- JS大小写字母转换
var a = "ABCd"; console.log(a.toLowerCase());//转换成小写 console.log(a.toUpperCase());//转换成大写
- C语言 大小写字母转换
//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 方法1: #include<stdio.h> #include<stdlib.h> ...
- 前端的字符串时间如何自动转换为后端Java的Date属性,介绍springMVC中如何解决时间转换问题
平常在开发过程中,前端选择时间一般都要使用时间选择插件,但是这种插件选出来的时间都是字符串类型,我们该怎么转换为后端的Date呢?/? 前端效果如下(笔者用的是layDate5.0插件): 修改前的后 ...
随机推荐
- Linux - 压缩
tar tar zxvpf gz.tar.gz # 解包tar.gz 不指定目录则全解压; -C 放到指定目录 包中的目录: -o 是强制覆盖: tar zcvpf /$path/gz.tar.gz ...
- TCP网络编程
TCP网络编程 与UDP不同的是TCP是通过客服端和服务端的方式来传输数据的.客服端:public class TCPClient { /** * @param args * @th ...
- POJ 1200 Crazy Search (哈希)
题目链接 Description Many people like to solve hard puzzles some of which may lead them to madness. One ...
- python - 计算器 程序练习
v1.0 计算器(数据内不含括号方式:) import re def jisuan(a,b,c): sun_count = 0 if c =="+": sun_count = st ...
- Python 入门基础18 --re模块+内存管理
今日内容: 1.垃圾回收机制 2.re模块 一.垃圾回收机制 在计算机中,不能被程序访问到的数,称之为垃圾 1.1 引用计数 引用计数用来记录值的内存地址被记录的次数 每引用一次就对标记 +1 操作 ...
- maven配置jdk1.8环境
<!-- 局部jdk配置,pom.xml中 --> <build> <plugins> <plugin> <groupId>org.apac ...
- AutoML技术现状与未来展望
以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...
- CodeForces Contest #1137: Round #545 (Div. 1)
比赛传送门:CF #1137. 比赛记录:点我. 每次都自闭的 div1 啊,什么时候才能上 IM 呢. [A]Skyscrapers 题意简述: 有一个 \(n\times m\) 的矩阵 \(a_ ...
- javascript 添加行,删除行,datepicker获取当前日期和上一个月日期并设置格式,笔记
$(function () { getdatepicker(); today(); getPreMonth(); getdatetimepicker(); }); function today(){ ...
- java中printf()方法简单用法
%n 换行 相当于 \n %c 单个字符 %d 十进制整数 %u 无符号十进制数 %f 十进制浮点数 %o 八进制数 %x 十六进制数 %s 字符串 %% 输出百分号 > 在printf()方法 ...