专栏首页大数据分享(五)Hive的UDF、UDAF和UDTF自定义函数

(五)Hive的UDF、UDAF和UDTF自定义函数

四,函数

1,排序

order by(全局排序):不经常用 sort by+distrbutre by :经常用

set mapreduce.job.reduce=3; select * from emp sort by empno desc; select sal,deptno from emp distribute by sal sort by sal;

cluster by:只能是升序排序,相当于(sort by+distrbutre by ) select sal,deptno from emp cluster bY sal;

2.自带函数

select concat_ws('_','sdfsdf','sdfs','123'); select cast('000000000000123123123123' as bigint); select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1','HOST'); select get_json_object('{"name":"jack","age":"20"}','$.name');

实现wordcount create table t_movie( name string, type string ) row format delimited fields terminated by ' ' lines terminated by '\n' location '/data/inner/ODS/01/t_movie';

load data inpath '/data/inner/RAW/01/t_movie/movie' into table t_movie;

select * from t_movie; select name,split(type,',') from t_movie; select explode(split(type,',')) from t_movie;

select name,tcol from t_movie LATERAL VIEW explode(split(type,',')) typetable AS tcol;

create table t_wordcount( wordline string ) row format delimited fields terminated by '\n' location '/data/inner/ODS/01/t_wordcount';

load data inpath '/data/inner/RAW/01/t_wordcount/harry' into table t_wordcount; select word,count(word) from t_wordcount lateral view explode(split(wordline,' ')) eswtable as word group by word; select word,count(word) from (select explode(split(wordline,' ')) word from t_wordcount) esw group by word;

3.自定义函数

1,继承类 2,重写方法(实现逻辑) 3,打包 4,上传,创建函数 <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.6.5</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.6.5</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>1.2.1</version> </dependency> </dependencies>

UDF: public class UDFHello extends UDF { public static String evaluate(String value) { .................. } }

hadoop fs -mkdir -p /bdp/hive/bin/lib hadoop fs -put ./demouf.jar /bdp/hive/bin/lib create function sxt_hello as 'com.vincent.UDFHello' using jar 'hdfs:////bdp/hive/bin/lib/demouf.jar';

UDAF: public static class SxtInnerClass implements UDAFEvaluator { @Override //获取Hive的集群信息 public void init() {} //输入数据端,进行map操作 public boolean iterate(String value) {} //数据输出端,进行reduce输出 public int terminatePartial() {} public String terminate() {} } }

UDTF: public class ExplodeMap extends GenericUDTF { @Override //数据结果:主要用来写逻辑操作 public void process(Object[] args){} @Override //数据输入端:主要用来检测数据是否符合标准 public StructObjectInspector initialize(ObjectInspector[] args){} @Override //关闭 public void close() {}

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • (三)Hive基本操作命令

    1.DML(DataManipulationLanguage):数据操作语言,用来定义数据库记录; 2.DCL(DataControlLanguage):数据...

    wolf
  • (四)Java读写文件,合并成新的文件

    AppCrashed participate__recharge_activity participate_activity

    wolf
  • 番外:Ubuntu虚拟机,帐户密码忘记并修改

    3.将recovery nomodeset,改成quiet splash rw init=/bin/bash 然后按F10, 启动

    wolf
  • ASP.NET 调味品:AJAX

    Karl Seguin 适用于: AJAX(异步 JavaScript 和 XML) Microsoft AJAX.NET Microsoft ASP.NET ...

    张善友
  • Gof设计模式之七大设计原则(六)

    前言 今天的设计原则重理论,举例子只能是文字形式,没法使用代码解释,希望大家可以多读几遍。真正体会到设计原则的好处。每一个设计原则,我都尽量用非...

    用户1257393
  • sql注入学习总结

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    信安之路
  • 你知道豆瓣电影是怎么评分的吗?

    “假设,是针对我们的分析结果而言。你希望最后输出一个什么结果,或者你需要证明什么结果,都可以当做假设!”

    小一不二三
  • 爬虫实战-手把手教你爬豆瓣电影

    如果上面三小节还有问题,可以点回去再复习一下。作为基础内容并不是要求大家一定都掌握,特别是第三小节,网页解析用法特别多,一般人很难都记住。 我在写这篇的时候也...

    小一不二三
  • Python 实战(3):更多的页面

    现在我们网站已经有了一个简单的页面、一段简单的请求处理代码和一个简单的数据库。上次最后我剧透了下,之后将会通过豆瓣电影的 API 获取更多的电影数据。不过在此之...

    Crossin先生
  • NewLife.XCode中如何借助分部抽象多个具有很多共同字段的实体类

    背景: 两个实体类:租房图片、售房图片 这两个表用于存储房源图片记录,一个房源对应多个图片,两个表的差别就在于一个业务关联字段。 租房图片中的RentID记录这...

    大石头

扫码关注云+社区

领取腾讯云代金券