如何在pyspark中使用Pandas UDF功能 [英] How to use Pandas UDF Functionality in pyspark

查看:31
本文介绍了如何在pyspark中使用Pandas UDF功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个有两列的火花框,看起来像:

+-------------------------------------------------------------+------------------------------------+
|docId                                                        |id                                  |
+-------------------------------------------------------------+------------------------------------+
|DYSDG6-RTB-91d663dd-949e-45da-94dd-e604b6050cb5-1537142434000|91d663dd-949e-45da-94dd-e604b6050cb5|
|VAVLS7-RTB-8e2c1917-0d6b-419b-a59e-cd4acc255bb7-1537142445000|8e2c1917-0d6b-419b-a59e-cd4acc255bb7|
|VAVLS7-RTB-c818dcde-7a68-4c1e-9cc4-c841660732d2-1537146854000|c818dcde-7a68-4c1e-9cc4-c841660732d2|
|IW2BYL-RTB-E9727F7D-D1BA-479C-9D3A-931F87E78B0A-1537146572000|E9727F7D-D1BA-479C-9D3A-931F87E78B0A|
|DYSDG6-RTB-f50f79e9-3ec3-4bd8-8e53-f62c3f80bcb0-1537146220000|f50f79e9-3ec3-4bd8-8e53-f62c3f80bcb0|
+-------------------------------------------------------------+------------------------------------+

我有一个将id列转换为85位编码字符串的函数:

def convert_id(id):
    import base64 as bs
    id_str = str(id).replace("-", "") 
    return str(bs.a85encode(bytearray.fromhex(id_str)))[2:-1]

我想使用 pandas UDF进行转换,据报道它比正常的UDF更快。

我如何才能做到这一点? TIA。

推荐答案

完成。 简单的函数可以帮助实现这一点:

@pandas_udf(returnType=StringType())
def convert_id(id):
    converted = id.map(lambda x : str(bs.a85encode(bytearray.fromhex(str(x).replace("-", ""))))[2:-1])
    return converted

这篇关于如何在pyspark中使用Pandas UDF功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆