Hive基础(十)-reflect函数的使用

举报
bigdata张凯翔 发表于 2021/03/29 02:04:09 2021/03/29
【摘要】 hive中 reflect函数的使用 使用java.lang.Math当中的Max求两列中最大值 --创建hive表 create table test_udf(col1 int,col2 int) row format delimited fields terminated by ','; --准备数据 test_udf.txt 1,2 4,3 6,4 7,5 5,6 -...

hive中 reflect函数的使用

  • 使用java.lang.Math当中的Max求两列中最大值
--创建hive表
create table test_udf(col1 int,col2 int) row format delimited fields terminated by ',';
--准备数据 test_udf.txt
1,2
4,3
6,4
7,5
5,6
--加载数据
load data local inpath '/root/hivedata/test_udf.txt' into table test_udf;
--使用java.lang.Math当中的Max求两列当中的最大值
select reflect("java.lang.Math","max",col1,col2) from test_udf;
  • 不同记录执行不同的java内置函数
--创建hive表
create table test_udf2(class_name string,method_name string,col1 int , col2 int) row format delimited fields terminated by ',';
--准备数据 test_udf2.txt
java.lang.Math,min,1,2
java.lang.Math,max,2,3
--加载数据
load data local inpath '/root/hivedata/test_udf2.txt' into table test_udf2;
--执行查询
select reflect(class_name,method_name,col1,col2) from test_udf2;
  • 判断是否为数字
使用apache commons中的函数,commons下的jar已经包含在hadoop的classpath中,所以可以直接使用。
使用方式如下:
select reflect("org.apache.commons.lang.math.NumberUtils","isNumber","123")

文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/565ea69598d3

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200