zoukankan      html  css  js  c++  java
  • SparkSQL使用之如何使用UDF

    使用java开发一个helloworld级别UDF,打包成udf.jar,存放在/home/hadoop/lib下,代码如下:

    package com.luogankun.udf;
    import org.apache.hadoop.hive.ql.exec.UDF;
    public class HelloUDF extends UDF {
        public String evaluate(String str) {
            try {
                return "HelloWorld " + str;
            } catch (Exception e) {
                return null;
            }
        }
    }

     Hive中使用UDF

    cd $HIVE_HOME/bin
    add jar /home/hadoop/lib/udf.jar CREATE TEMPORARY FUNCTION hello AS 'com.luogankun.udf.HelloUDF';
    select hello(url) from page_views limit 1;

     SparkSQL中使用UDF

    方式一:在启动spark-sql时通过--jars指定

    cd $SPARK_HOME/bin
    spark-sql --jars /home/hadoop/lib/udf.jar
    CREATE TEMPORARY FUNCTION hello AS 'com.luogankun.udf.HelloUDF';
    
    select hello(url) from page_views limit 1;

    方式二:先启动spark-sql后add jar

    cd $SPARK_HOME/bin
    spark-sql
    add jar /home/hadoop/lib/udf.jar;
    CREATE TEMPORARY FUNCTION hello AS 'com.luogankun.udf.HelloUDF';
    select hello(url) from page_views limit 1;

    在测试过程中发现并不支持该种方式,会报java.lang.ClassNotFoundException: com.luogankun.udf.HelloUDF

    如何解决? 

    1)需要先将udf.jar的路径配置到spark-env.sh的SPARK_CLASSPATH中,形如:

    export SPARK_CLASSPATH=$SPARK_CLASSPATH:/home/hadoop/software/mysql-connector-java-5.1.27-bin.jar:/home/hadoop/lib/udf.jar

    2)再启动spark-sql,直接CREATE TEMPORARY FUNCTION即可;

    cd $SPARK_HOME/bin
    spark-sql
    CREATE TEMPORARY FUNCTION hello AS 'com.luogankun.udf.HelloUDF';
    select hello(url) from page_views limit 1;

    方式三:Thrift JDBC Server中使用UDF

    在beeline命令行中执行:

    add jar /home/hadoop/lib/udf.jar;
    CREATE TEMPORARY FUNCTION hello AS 'com.luogankun.udf.HelloUDF';
    select hello(url) from page_views limit 1;
  • 相关阅读:
    servlet配置restful
    Servlet异步上传文件
    JQuery全选Prop(“check”,true)和attr("attr",true)区别
    登录FTP,下载并读取文件内容
    Get请求中文乱码的几种解决方式
    系统架构概念及思想2
    系统架构概念及思想1
    Harbor高可用
    Harbor基础
    Docker原理及使用
  • 原文地址:https://www.cnblogs.com/luogankun/p/3970153.html
Copyright © 2011-2022 走看看