zoukankan      html  css  js  c++  java
  • Hive自定义UDF的JAR包加入运行环境的方法

    Hive开发udf函数打包jar文件后,需将jar文件放入hive的运行环境,方法有三。

    hive(default) > add jar /opt/module/hive/lib/udf-1.0-SNAPSHOT.jar;

    1、进入hive,添加jar,
    add jar /opt/module/hive/lib/hiveudf.jar
    2、创建一个临时函数
    // create temporary function my_lower as 'com.example.hive.udf.LowerCase';

    create temporary function myToLow as 'My_UDF';
    3、调用
    select myToLow(name) from teacher;


    先将http://blog.csdn.net/fjssharpsword/article/details/70265554中重定义的两个类打包成DefTextInputFormat.jar,并放到/home/hdfs目录下。


    1、方法一:使用add jar命令


    1)在hive命令行下执行:add jar /home/hdfs/DefTextInputFormat.jar;

    Added [/home/hdfs/DefTextInputFormat.jar] to class path
    Added resources: [/home/hdfs/DefTextInputFormat.jar]
    该方法每次启动Hive的时候都要从新加入,退出hive就会失效。


    2)验证,建表语句如下:

    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '#'
    STORED AS INPUTFORMAT
    'com.hive.DefTextInputFormat'
    OUTPUTFORMAT
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    LOCATION
    'hdfs://nameservice-ha/pgw/gz';


    查询后文件和表字段一致。

    2、hive-site.xml文件配置hive.aux.jars.path:


    配置参考如下:
    <property>
    <name>hive.aux.jars.path</name>
    <value>/opt/module/hive/lib/test.jar,file:///jarpath/test.jar</value>
    </property>

    create function myToLow as 'My_UDF';

    drop function myToLow;
    该方法不需要每次启动Hive执行命令加入,需要配置文件。


    3、根目录${HIVE_HOME}下创建文件夹auxlib,然后将自定义jar文件放入该文件夹中;


    该方法方便快捷,不过对于客户端操作环境就不能执行。
    ————————————————
    版权声明:本文为CSDN博主「fjssharpsword」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/fjssharpsword/article/details/70271671

     1   <dependencies>
     2         <dependency>
     3             <groupId>org.apache.logging.log4j</groupId>
     4             <artifactId>log4j-core</artifactId>
     5             <version>2.8.2</version>
     6         </dependency>
     7         <!-- 辅助模块包 -->
     8         <dependency>
     9             <groupId>org.apache.hadoop</groupId>
    10             <artifactId>hadoop-common</artifactId>
    11             <version>3.1.3</version>
    12         </dependency>
    13         <!-- 包含mr -->
    14         <dependency>
    15             <groupId>org.apache.hadoop</groupId>
    16             <artifactId>hadoop-client</artifactId>
    17             <version>3.1.3</version>
    18         </dependency>
    19         <!-- hdfs -->
    20         <dependency>
    21             <groupId>org.apache.hadoop</groupId>
    22             <artifactId>hadoop-hdfs</artifactId>
    23             <version>3.1.3</version>
    24         </dependency>
    25 
    26         <dependency>
    27             <groupId>org.apache.hive</groupId>
    28             <artifactId>hive-exec</artifactId>
    29             <version>1.2.1</version>
    30         </dependency>
    31 
    32         <dependency>
    33             <groupId>org.apache.hive</groupId>
    34             <artifactId>hive-jdbc</artifactId>
    35             <version>1.2.1</version>
    36         </dependency>
    37 
    38         <dependency>
    39             <groupId>junit</groupId>
    40             <artifactId>junit</artifactId>
    41             <version>4.13.2</version>
    42             <scope>test</scope>
    43         </dependency>
    44     </dependencies>
    1 public class My_UDF extends UDF {
    2     public String evaluate(String str){
    3         return str.toLowerCase();
    4     }
    5 }
  • 相关阅读:
    第二阶段冲刺10
    第二阶段冲刺9
    第二阶段冲刺8
    (转载)关于数组的几个面试题
    关于静态变量
    linux进程地址空间详解(转载)
    单例模式,多种实现方式JAVA
    最佳线程数
    python学习
    svn设置
  • 原文地址:https://www.cnblogs.com/chang09/p/15786885.html
Copyright © 2011-2022 走看看