微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 PySpark 中将十六进制字符串转换为十六进制字节格式

如何解决如何在 PySpark 中将十六进制字符串转换为十六进制字节格式

我目前正致力于将 sql 管道转换为 PySpark,但在将 sqlfrom_hex 函数转换为 PySpark 时遇到了一些困难。我看到了一些涉及将字符串转换为 int,然后转换为十六进制字节的解决方案,但这似乎效率很低。有没有一种有效的方法可以将十六进制字符串的列转换为十六进制字节?

对于上下文,我需要加入另一个已经是字节格式的表:

on i.joining_column = from_hex(a.joining_column)

其中 i 已经是十六进制字节格式,而 a 是一个字符串。

任何帮助将不胜感激!

我确实看到 this 是关于将字符串转换为整数,但不确定这对我的情况是否有用。

解决方法

您可以使用 bultin 函数 unhex :

spark.sql("select hex('hex test') as hexa").show(truncate=False)
#+----------------+
#|hexa            |
#+----------------+
#|6865782074657374|
#+----------------+

spark.sql("select unhex('6865782074657374') as bytes").show(truncate=False)
#+-------------------------+
#|bytes                    |
#+-------------------------+
#|[68 65 78 20 74 65 73 74]|
#+-------------------------+

该函数在 DataFrame API 中也可用:unhex

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。