使用Hive UDF需要的CDH-maven依赖

mac2025-03-26  11

环境相关:开发主机:Win7开发环境:IDEAhadoop版本:hadoop-2.6.0-cdh5.7.1hive版本:hive-1.1.0-cdh5.7.1 # 配置文件如下: <?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>vincent</groupId> <artifactId>vincent</artifactId> <version>1.0-SNAPSHOT</version> <!-- 根据要连接的hadoop和hive,设置版本参数 --> <properties> <hadoop.version>2.6.0-cdh5.7.1</hadoop.version> <hive.version>1.1.0-cdh5.7.1</hive.version> </properties> <!-- 因为使用CDH的hadoop和hive,因此要添加CDH的官方repository,才能够下载相应的依赖包 --> <!-- 如果使用Apache版本的hadoop和hive,则不需要添加该repository --> <repositories> <repository> <id>cloudera</id> <url>http://repository.cloudera.com/artifactory/cloudera-repos</url> </repository> </repositories> <dependencies> <!-- 添加依赖组件,根据上方配置的版本参数和repository知识库下载依赖 --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> </dependency> <!-- junit是java的单元测试框架 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies> </project>

1、开发JAVA的UDF类

public class ParseJson extends UDF{ // 重载 :返回值类型 和参数类型及个数,完全由用户自己决定 // 本处需求是:给一个字符串,返回一个数组 public String[] evaluate(String json) { String[] split = json.split("\""); String[] res = new String[]{split[3],split[7],split[11],split[15]}; return res; } }

创建自定义函数UDF

1.上传jar包到运行hive所在的linux机器 2.在hive中添加jar包 add jar /root/jsonparse.jar; 3.在hive的提示符中,创建一个临时函数: CREATE TEMPORARY FUNCTION myjson AS 'com.etc.ParseJson';
最新回复(0)