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

eiee3dmh  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(365)

我目前正在将一个sql管道转换为pyspark,但在翻译sql管道时遇到了一些困难 from_hex 功能到pyspark。我看到了一些解决方案,包括将字符串转换为int,然后转换为十六进制字节,但这似乎效率很低。有没有一种有效的方法将十六进制字符串的列转换为十六进制字节?
对于上下文,我需要联接另一个已采用字节格式的表:

on i.joining_column = from_hex(a.joining_column)

其中i已经是十六进制字节格式,a是一个字符串。
任何帮助都将不胜感激!
我确实看到了关于将字符串转换为int的内容,但不确定这在我的例子中是否有用。

kxeu7u2r

kxeu7u2r1#

你可以使用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

相关问题