|
|
在开始正式数据处理之前,我觉得有必要去学习理解下UDF。
UDF
UDF全称User-Defined Functions
,用户自定义函数,是Spark SQL的一项功能,用于定义新的基于列的函数,这些函数扩展了Spark SQL的DSL用于转换数据集的词汇表。
我在databricks上找到一个比较简单理解的入门栗子:
Register the function as a UDF
|
|
Call the UDF in Spark SQL
|
|
|
|
我理解就是先定义一个函数squared
,返回输入数字的平方,然后register,并绑定square
方法名为square
,然后就在Spark SQL中直接使用square
方法。
实例一:温度转化
|
|
我们将定义一个 UDF 来将以下 JSON 数据中的温度从摄氏度(degrees Celsius)转换为华氏度(degrees Fahrenheit):
|
|
实例二:时间转化
|
|
自定义函数
|
|
如果想要在SQL外面使用,必须通过spark.sql.function.udf
来创建UDF
|
|
实践操作
写一个UDF来将一些Int数字分类
|
|
注册:
|
|
SQL:
|
|
写到这里,再回顾UDF,我感觉这就像是去为了方便做一个分类转化等操作,和Python里面的函数一样,只不过这里的UDF一般特指Spark SQL里面使用的函数。然后发现这里和SQL中的自定义函数挺像的:
|
|
|
|
好像有异曲同工之妙~