作者:qqian | 来源:互联网 | 2023-05-17 18:51
本文主要分享【hive用法】,技术文章【hive-函数-reflect】为【zdkdchao】投稿,如果你遇到hive相关问题,本文相关知识或能到你。hive用法一、comreflect函数可
本文主要分享【hive用法】,技术文章【hive-函数-reflect】为【zdkdchao】投稿,如果你遇到hive相关问题,本文相关知识或能到你。
hive用法
一、com
reflect函数可以支持在sql中调用类路径下jar中的自带函数,比如jdk的、commons的,这样就可以完全摆脱复杂的UDF了,不仅可以直接调用类路径下jar的方法,自定义的也可以add之后用reflect调用。
二、版本支持情况
从0.7.0开始有,从0.9.0开始,有了个别名java_method
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-Misc.Functions
https://cwiki.apache.org/confluence/display/Hive/ReflectUDF
三、usage 所有记录执行相同的java内置函数
hive中建一张表test_udf:column1(int),column2(int)
表中数据如下:
1,2
2,3
3,4
4,5
5,6
sql:select reflect(“java.lang.Math”,“max”,column1,column2) from test_udf
结果:
2
3
4
5
6
可以根据自己的需求使用其他内置函数,以后不用苦逼的求udf开发人员给自己特定开发了。当然特殊场景还是需要的。下面来个更绝的用法。
不同记录执行不同的java内置函数
建表test_udf2:class_name(string),method_name(string),column1,column2
数据如下:
java.lang.Math,min,1,2
java.lang.Math,max,2,3
sql:select reflect(class_name,method_name,column1,column2) from test_udf2;
结果:
1
3
使用apache commons中的函数,commons下的jar已经包含在hadoop的classpath中,所以可以直接使用。
使用方式如下:
select reflect(“org.apache.commons.lang.math.NumberUtils”,“isNumber”,“123”) from dual;
结果:
true
使用自定义jar
add jar hdfs://hdpnn:9000/group/analysts/ide_taobao-hz_boqian.zwq/hive/udf_jar/11354193197093.jar;
select reflect(class_name,method_name,“123”) from dual;
本文《hive-函数-reflect》版权归zdkdchao所有,引用hive-函数-reflect需遵循CC 4.0 BY-SA版权协议。