zoukankan      html  css  js  c++  java
  • hive新特性reflect函数介绍

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

    使用案例1:所有记录执行相同的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开发人员给自己特定开发了。当然特殊场景还是需要的。下面来个更绝的用法。

    使用案例2:不同记录执行不同的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

    使用案例3:使用apache commons中的函数,commons下的jar已经包含在hadoop的classpath中,所以可以直接使用。

    使用方式如下:

    select reflect("org.apache.commons.lang.math.NumberUtils","isNumber","123") from dual;

    结果:

    true

    使用案例4:使用第三方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;



    其他函数功能等待大家尝试。

  • 相关阅读:
    火狐URL编码问题
    Asp.net动态关键字
    charindex ,PATINDEX,contains,FREETEXT用法
    PanGu词库批量添加关键词
    Dictionary SortedList HashSet List用法
    hubbledotnet查询速度慢的问题
    asp.net 页面static变量问题
    String.Concat和String.Format用法
    .net显示今天农历的代码
    存储过程用户登录
  • 原文地址:https://www.cnblogs.com/hustzzl/p/7887022.html
Copyright © 2011-2022 走看看