`
dextersmake
  • 浏览: 4412 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hive0.13的udtf使用例子

阅读更多

hive0.13的自定义UDTF函数的应用

 

代码的编写

 

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.csm.data.udf.hive;

import java.util.ArrayList;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;

/**
 * 将一个字段,它的值为
 * 流行|90后|粤语|
 * 这样的字段,转换为
 * 流行
 * 90后
 * 粤语
 * 这样的三行
 * 本方法只能支持
 * select csm_explode(tag) from t_test这种单字段的形式
 * 
 */
@Description(name = "csm_explode", value = "_FUNC_(a) - separates the elements of string with '|'   into multiple rows")
public class CSMUDTFExplode extends GenericUDTF {


	@Override
	public void close() throws HiveException {
	}

	@Override
	public StructObjectInspector initialize(ObjectInspector[] args)
			throws UDFArgumentException {
		if (args.length != 1) {
			throw new UDFArgumentException("csm_explode() takes only one argument");
		}

		ArrayList<String> fieldNames = new ArrayList<String>();
		ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();
		//返回的新列的字段名称
		fieldNames.add("tag");
		fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
		return ObjectInspectorFactory.getStandardStructObjectInspector(
				fieldNames, fieldOIs);
	}


	@Override
	public void process(Object[] o) throws HiveException {
		String input = o[0].toString();
		String[] test = input.split("\\|");
		//forward处理一个数组,每个数组作为一行返回,每个数组里的元素作为一列
		for(int i =0 ;i < test.length;i ++){
			String[] tag = {test[i]};
			forward(tag);
		}
		
	}

	@Override
	public String toString() {
		return "";
	}
}

 

这个自定义函数最好是打包成一个单独的jar包,这个jar包需要指定一个有main函数的类作为默认的入口,虽然这个类用不上

 

写了一个ATest作为有main函数的类

 

作为java application运行一下



 

运行结果不重要,只要确定main函数有效就可以了



 

 

 

导出Jar包:



 

 

这里选择导出为runnable jar包

 

指定刚刚定义的main函数类作为jar包的默认入口



 

忽略这个警告:



 

导出的jar包,这里依赖的jar包是不需要上传到有Hadoop环境的服务器上



 

 

使用scp工具上传jar包



 原始的Hive表数据:



 

 

注册自定义函数为临时函数



 

使用该自定义函数



 

 

 

  • 大小: 75.7 KB
  • 大小: 25.3 KB
  • 大小: 41.2 KB
  • 大小: 43.9 KB
  • 大小: 30.2 KB
  • 大小: 53 KB
  • 大小: 64.1 KB
  • 大小: 74 KB
  • 大小: 10.4 KB
  • 大小: 78.9 KB
  • 大小: 18.5 KB
  • 大小: 9.6 KB
  • 大小: 32.9 KB
1
1
分享到:
评论

相关推荐

    hive0.13安装PPT

    hive安装

    Hadoop2.2.0Hbase0.98.1Hive0.13完全安装手册

    ### Hadoop2.2.0 + HBase0.98.1 + Sqoop1.4.4 + Hive0.13 完全安装手册 #### 前言 随着大数据技术的发展,Hadoop已经成为处理海量数据的核心框架之一。本文旨在为读者提供一套最新的Hadoop2.2.0、HBase0.98.1、...

    hive UDF需要jar包

    可以通过Hive命令行界面使用`ADD JAR`语句来临时引入JAR,或者将其放在Hive的lib目录下使其全局可用。 5. **注册UDF**: 在Hive会话中,使用`CREATE TEMPORARY FUNCTION`或`CREATE FUNCTION`语句注册UDF。临时函数...

    HiveUDTF:此Hive UDTF将复制第一个输入列

    此Hive UDTF将复制第一个输入列 一种。 如何制作罐子 mvn package ## b。 准备一个带有示例数据的Hive表 在Hive CLI中,创建测试表: create table testudtf (a string, b string) ROW FORMAT DELIMITED FIELDS ...

    hive-exec-0.13.1.jar

    hive 0.13版本使用orcfile报错,自己用mavn重新编译的hive-exec-0.13.1.jar,替换lib下的包即可正常使用orcfile

    hive搭建及使用入门简介(内含PPT、各种表创建sql及hive搭建使用笔记)

    当进行JOIN操作时,如果两个表在JOIN键上使用了相同的分桶策略,Hive可以使用更高效的MapReduce算法,提升查询效率。 “各种表创建SQL”这部分将详细讲解CREATE TABLE语句的各种用法,包括创建基本表、分区表、分桶...

    关于hive的一些笔记和例子

    这时一个关于hive的文档类。主要内容包括一些安装以及一些例子

    Hive使用手册Hive使用手册

    连接Hive通常通过Hive Shell或使用其他支持Hive的客户端如Beeline、Hue等。要连接Hive,你需要知道Hive服务器的地址、端口以及认证方式(如果有的话)。 2. **Hive支持的数据类型** - **原子数据类型** 包括:INT...

    hadoop+hive+mapreduce的java例子

    JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 WebGUI是通过浏览器访问 Hive 本文主要介绍的就是第二种用户接口,直接进入正题。 1、Hive 安装: 1)hive的安装请参考网上的相关文章,测试时只在...

    Hive metastore 使用达梦数据库存储元数据

    《Hive metastore 使用达梦数据库存储元数据详解》 在大数据处理领域,Hive作为一个分布式数据仓库工具,被广泛用于存储和管理大规模结构化数据。Hive的元数据是其核心组成部分,它包含了表、分区、列等信息,使得...

    apache-hive-2.1.1-bin

    8. **Hive UDFs (User Defined Functions)**:Hive 允许用户编写自定义函数(UDFs)以扩展其内置功能,包括UDAF(用户定义的聚合函数)和 UDTF(用户定义的表生成函数)。 9. **ACID Transactions**:从 Hive 0.13 ...

    php链接HIVE的例子代码

    具体来说,这个例子将演示如何使用PHP客户端与Hive Server2(Hive的第二代网络服务接口)进行通信,这个过程通常涉及到以下几个关键步骤: 1. **安装和配置Thrift**:首先,你需要在PHP环境中安装Thrift库。这可以...

    Hive安装,使用MySQL作为元数据库

    在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量结构化数据。本教程将详细介绍如何安装Hive,...

    apache-hive-2.1.0-bin.tar.gz

    9. **ACID Transactions**:从Hive 0.13版本开始,Hive支持ACID(原子性、一致性、隔离性和持久性)事务,提供了对数据更新和删除的支持,增强了数据的一致性。 10. **Hive on Spark**:虽然在2.1.0版本中,Hive...

    Hive2.x系列驱动,

    Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL语言处理存储在HDFS(Hadoop Distributed File System)上的大规模数据集。 描述 "既可以连接没有kerberos的hive也可以连接有kerberos的hive" 暗示了这些...

    HIVE安装及详解

    * 数据存储:HIVE使用Hadoop分布式文件系统(HDFS)存储数据,而传统数据库使用关系数据库管理系统(RDBMS) * 数据处理:HIVE使用MapReduce处理数据,而传统数据库使用SQL查询 * 扩展性:HIVE具有高可扩展性,可以...

    apache-hive-1.2.1源码包(已编译)(含Hive的使用全解)

    Hive可以通过编写自定义函数(UDF, User Defined Function)、UDAF(UDAF, User Defined Aggregate Function)和UDTF(User Defined Table Generating Functions)扩展其功能,满足特定业务需求。 9. **Hive与HBase的...

    数据库工具连接hive的驱动包

    总结来说,“数据库工具连接Hive的驱动包”是连接Hive和数据库管理工具的桥梁,它的正确配置和使用对于高效的数据操作至关重要。了解并掌握这些知识点,有助于我们在大数据环境中更便捷地进行数据管理和分析工作。

    Hive UDF开发

    - Hive 0.13版本及以后支持创建永久函数。 - 如果修改了Java代码并重新打包上传了新的JAR文件,需要退出当前的Hive会话重新进入,并再次创建函数,以确保加载的是最新的JAR文件。 通过以上步骤,可以有效地扩展Hive...

    大数据技术基础实验报告-Hive安装配置与应用.doc

    默认情况下,Hive使用内嵌的Derby数据库作为元数据库,但考虑到并发访问和性能问题,推荐使用MySQL作为元数据库。首先,我们需要安装MySQL服务器: ``` apt-get install mysql-server -y service mysql start `...

Global site tag (gtag.js) - Google Analytics