hive函数之~reflect函数

Posted lojun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive函数之~reflect函数相关的知识,希望对你有一定的参考价值。

reflect函数可以支持在sql中调用java中的自带函数,秒杀一切udf函数。

使用java.lang.Math当中的Max求两列中最大值

创建hive表

create table test_udf(col1 int,col2 int) row format delimited fields terminated by ,;

准备数据并加载数据

cd /export/servers/hivedatas
vim test_udf

1,2

4,3

6,4

7,5

5,6

加载数据

hive (hive_explode)> load data local inpath /export/servers/hivedatas/test_udf overwrite into table test_udf;

使用java.lang.Math当中的Max求两列当中的最大值

hive (hive_explode)> select reflect("java.lang.Math","max",col1,col2) from test_udf;

不同记录执行不同的java内置函数

创建hive表

hive (hive_explode)> create table test_udf2(class_name string,method_name string,col1 int , col2 int) row format delimited fields terminated by ,;

准备数据

cd /export/servers/hivedatas
vim test_udf2

java.lang.Math,min,1,2

java.lang.Math,max,2,3

加载数据

hive (hive_explode)> load data local inpath /export/servers/hivedatas/test_udf2 overwrite into table test_udf2;

执行查询

hive (hive_explode)> 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")

 

以上是关于hive函数之~reflect函数的主要内容,如果未能解决你的问题,请参考以下文章

hive参数传递,hive常用函数

hive参数传递,hive常用函数

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

hive函数之~窗口函数与分析函数

hive之udf函数的使用

大数据之Hive:Hive 开窗函数