关于hive,spark,pyspark 使用UDF的一些理解(总结)

本文介绍了在hive, spark和pyspark中使用用户定义函数(UDF)的不同方法,包括在hive中使用java和scala编写UDF,在spark中注册UDF的推荐方式,在pyspark中使用python UDF、pandas UDF以及通过jar包注册UDF的优缺点。" 120808285,11537307,图的连通性:割点、桥、欧拉路径与强连通分量,"['图论算法', '数据结构', '图的遍历']
部署运行你感兴趣的模型镜像

使用方式

1.在hive中使用udf
1.1使用java代码编写udf
一句话总结:继承UDF类,重写evaluate()方法。
打成jar包之后,要么注册成hive的临时函数,要么注册为永久函数。
hive注册临时函数
	hive>add jar /xxx/xxx/your_udf.jar;
	hive>CREATE TEMPORARY FUNCTION func_name AS 'com.xxx.xxxx.MyUDF';
	hive>list jars;//查看添加好的jar包;
	hive>show functions like ’func_*‘; //查看函数
hive注册永久函数
	hive>CREATE FUNCTION [db_name].func_name AS 'com.xxx.xxx.MyUDF' USING JAR 'hdfs://hadoop002:9000/xxx/xxx.jar'; //使用时要注意库的位置,非当前库操作需要加上库名方可使用
1.2使用scala代码编写udf
实验过,没创建成功,不能给hive用,也没人这么做,SB了,估计scala写的extend UDF1只能在scala编码使用
2.在spark中使用udf
2.1在spark中注册udf(推荐)

核心代码(spark2.x以上版本)

spark.udf.register("str_len", (str: String) => str.length())
spark.sql("select str_len(name) from xxx_table").show

详细讲解网上大把,不多赘述

3.在pyspark中使用udf
3.1python中注册udf(不推荐,性能差)
from pyspark.sql.functions import udf
from pyspark.sql.type import StringType
def strLen(str):
	len(str)
udf(strLen, StringType())
spark.sql("select len(name) from user")
3.2使用pandas的udf(推荐,性能好)
from pyspark.sql.functions import pandas_udf

def plus_one(a):
    return a + 1

//df_udf
plus_one_pd_udf = pandas_udf(plus_one, returnType=LongType())
//sql_udf这种方式可以写在sql中
spark.udf.register('plus_one',plus_one_pd_udf)
3.3引用scala或者java打成的jar包来注册udf(也推荐,有点小麻烦)
### 通过提交spark-submit的脚本加上 --jars [path/to/jar/x.jar]

# Pre Spark 2.1
spark._jvm.com.xxx.xxx.udf.MyUpper.registerUDF(spark._jsparkSession)

# Spark 2.1+
from pyspark.sql.types import LongType
sqlContext.registerJavaFunction("strLen", "com.xxx.xxx.udf.MyUDF", LongType())

# Spark 2.3+
from pyspark.sql.types import LongType
spark.udf.registerJavaFunction("strLen", "com.xxx.xxx.udf.MyUDF", LongType())
3.4采用在使用sql之前注册临时函数(中庸)
//利用--jars 上传java的udf的jar包
spark.sql(注册临时函数,参照1.1

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值