HIVE自定义UDF进行数据清理——IDEA
来源:互联网 发布:帝国全面战争海军数据 编辑:程序博客网 时间:2024/05/29 02:52
- IDEA自定义UDF并使用
- - 创建maven项目
- - pomxml文件
- - java代码
- - 导出为jar
- - 导出带依赖的jar包
- - 在Hive命令行中执行
- - 参考
- IDEA自定义UDF并使用
IDEA自定义UDF并使用
GitHub源码地址
- 创建maven项目
- 创建一个maven项目,添加hadoop-client和hive-exec的maven依赖
- 相关依赖查询:http://mvnrepository.com/
- pom.xml文件
1.贴下我的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?><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>per.wanghai</groupId> <artifactId>udf</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <hadoop.version>2.7.4</hadoop.version> <hive.version>2.1.1</hive.version> <!--<maven.compiler.source>1.8</maven.compiler.source>--> <!--<maven.compiler.target>1.8</maven.compiler.target>--> </properties> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> </dependency> </dependencies> <build> <plugins> <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- 打包 --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.6</version> <!--最终好像应用的时2.2-beta-5? --> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!--运行jar包时运行的主类,要求类全名--> <mainClass>per.wanghai.RemoveQuotesUdf</mainClass> </manifest> </archive> </configuration> <executions> <execution> <!-- 配置执行器 --> <id>make-assembly</id> <phase>package</phase> <!-- 绑定到package生命周期阶段上 --> <goals> <goal>single</goal> <!-- 只运行一次 --> </goals> </execution> </executions> </plugin> </plugins> </build></project>
2.编译时注意事项:(源jdk和目标jdk)(当然也可以直接在pom.xml中配置)
3.如果有的依赖下载失败,请检查下所需依赖的repository是否可从已经配置的maven仓库中下载到。没有对应的仓库:
- maven的setting.xml配置对应的mirror
- pom.xml中配置对应的repositorie
- java代码
示例代码(去除数据中的“”):
package per.wanghai;import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.io.Text;/** * @author 王海[https://github.com/AtTops] * @version V1.0 * @package per.wanghai * @Description * @Date:2017/10/20 9:28 */public class RemoveQuotesUdf extends UDF{ public Text evaluate(Text str){ if(null == str){ return null; } else if(null == str.toString()){ return null; } else { return new Text(str.toString().replaceAll("\"","")); }} public static void main(String[] args) { System.out.println(new RemoveQuotesUdf().evaluate(new Text("\"test_,\"666\""))); //输出test_,666 }}
- 导出为jar:
- 使用不带依赖的jar包应该照样可以执行,这里我尝试像Eclipse的“export”一样打不带依赖的包,以下为尝试步骤,最终失败(检查发现输出的jar下面没有class文件,还是原样的Java文件),希望知道正确方法的朋友能留言指点:
- 项目根目录处键入“F4”,选中Empty(可自定义需要打包的文件)(下方的选项会打包所有依赖包),然后在“Output Layout”中,把自己要打包的文件、文件夹添加进去。“+”中点击“File添加要打包的jar”,下方红框添加MANIFESET.MF文件
- 导出带依赖的jar包:
(会自动打包不带依赖的版本)
如果不带依赖的包无法正常执行:
Idea中把Maven项目的命令都做成了可视化的操作界面
- 直接使用IDEA自带的Maven Projects工具打包(需要提前在pom.xml中配置maven插件)
- (也可以使用IDEA自带的打包方式,不过感觉有些麻烦)
- 点开MavenProjects,双击“package”或者“assembly:assembly”进行打包。如果失败,之后再打包时,可以先“clean”再打包。
输出target目录下的文件:红框中的jar文件,是带依赖包的文件
同样,这里我们用不带依赖的jar包就行(文件大小通常就几KB)
- 在Hive命令行中执行
- add jar /你Linux机器的相应jar的对应位置(添加class path)
- create temporary function 自定义方法名 as “主程序的全路径”
- 这种方法添加的UDF是临时的,仅对当前session起作用
验证结果,所有的“”已经被清理
- 参考
Assembly官网
maven assembly 打包
mirror * 导致找不到包
阅读全文
0 0
- HIVE自定义UDF进行数据清理——IDEA
- Hive——用户自定义函数(UDF)
- HIVE 自定义函数 UDF
- Hive自定义UDF-RowNumber
- Hive自定义UDF-RowNumber
- Hive自定义UDF
- hive 增加自定义udf
- Hive自定义函数-UDF
- hive自定义函数UDF
- Hive自定义函数UDF
- Hive自定义UDF函数
- 自定义HIVE-UDF函数
- hive自定义函数UDF
- hive 自定义UDF,hive编译
- hive 自定义UDF UDAF UDTF
- Hive内部自定义函数UDF
- hive 自定义函数UDF,UDAF
- Hive自定义函数UDF开发
- 获取屏幕大小、获取底部虚拟按键高度
- 数值的整数次方
- ViewController的生命周期分析和使用
- 第一个Spring MVC框架的hello world项目
- 小米手机在Android Studio运行出错集及其解决方案
- HIVE自定义UDF进行数据清理——IDEA
- 系统监控工具----Inotify-Tools
- 初次使用MarkDown编辑器
- palindrome-partitioning Java code
- C++中内联函数的作用以及与宏代码的区别
- Android加载预览PDF文件
- SQLyog用户名秘钥
- Java,什么是实体类,实体类有什么用?
- Android资源文件string.xml中\u2026的意思