Spark SQL UDF使用

本文介绍了Spark SQL中自定义用户函数(UDF)的使用,包括注册和使用步骤。Spark SQL内置函数有限,但通过UDF能方便地扩展功能,如字符串长度计算(len)和字符串连接(concat_str)。UDF注册需调用registerFunction,并限制最多22个参数。
摘要由CSDN通过智能技术生成

    Spark1.1推出了Uer Define Function功能,用户可以在Spark SQL 里自定义实际需要的UDF来处理数据。

    因为目前Spark SQL本身支持的函数有限,一些常用的函数都没有,比如len, concat...etc 但是使用UDF来自己实现根据业务需要的功能是非常方便的。

   Spark SQL UDF其实是一个Scala函数,被catalyst封装成一个Expression结点,最后通过eval方法计根据当前Row计算UDF的结果,源码分析见:Spark SQL源码分析之UDF

   Spark SQL UDF使用起来非常方便,分2个步骤:

   一、注册

     当我们导入了SQLContext或者HiveContext,即有注册UDF的功能。

   registerFunction(udfName : String, func : FunctionN)

    由于scala语言的限制,这里UDF的参数仅支持22个。

   二、使用

    select udfName(param1, param2....) from tableName

   三、示例

我们这里创建2张表:
第一张dual会从README.md读取记录,里面仅有一个字段line : String
第二张表src,有2个字段key,value,数据是spark sql自带的测试数据。

我们使用 sbt/sbt hive/console进入测试环境:

1、字符串取长度 len()

创建table dual:
scala> sql("create table dual(line string)").collect()
14/09/19 17:41:34 INFO metastore.HiveMetaStore: 0: create_table: Table(tableName:dual, dbName:default, owner:root, createTime:1411119694, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSc
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值