900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Hive内置运算函数 自定义函数(UDF)和Transform

Hive内置运算函数 自定义函数(UDF)和Transform

时间:2020-09-19 08:11:10

相关推荐

Hive内置运算函数 自定义函数(UDF)和Transform

4.Hive函数

4.1 内置运算符

内容较多,见《Hive官方文档》

4.2 内置函数

内容较多,见《Hive官方文档》

/confluence/display/Hive/LanguageManual+UDF

测试各种内置函数的快捷方法:

1、创建一个dual表

create table dual(id string);

2、load一个文件(一行,一个空格)到dual表

hive> load data local inpath'/home/tuzq/software/hivedata/dual.txt' into table dual;

其中dual.txt里面只是一个空格

3、select substr('angelababy',2,3) from dual;

4.3 Hive自定义函数和Transform

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。

4.3.1 自定义函数类别

UDF 作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

UDAF(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(count,max)

4.3.2 UDF开发实例

l 简单UDF示例

前期准备,要把hive的lib包导入到工程中,其中UDF依赖的是hive-exec-1.2.1.jar。也就是说要把apache-hive-1.2.1-bin\lib中内容都引入到工程中。若用到hadoop中的一些api,请把hadoop的api也引入进去。

1、先开发一个java类,继承UDF,并重载evaluate方法

2、打成jar包上传到服务器

3、将jar包添加到hive的classpath

4、hive> add jar /home/tuzq/software/hivedata/udf.jar;

Added [/home/tuzq/software/hivedata/udf.jar] to class path

Added resources: [/home/tuzq/software/hivedata/udf.jar]

5、hive>创建临时函数与开发好的java class关联

5、即可在hql中使用自定义的函数tolowercase ip

l Json数据解析UDF开发

作业:

有原始json数据如下:

需要将数据导入到hive数据仓库中

我不管你中间用几个表,最终我要得到一个结果表:

注:全在hive中完成,可以用自定义函数

4.3.3 Transform实现

Hive的 TRANSFORM 关键字提供了在SQL中调用自写脚本的功能

适合实现Hive中没有的功能又不想写UDF的情况

使用示例1:下面这句sql就是借用了weekday_mapper.py对数据进行了处理.

其中weekday_mapper.py内容如下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。