如何在 PySpark 中将十六进制字符串转换为十六进制字节格式
How to convert hex string to hex bytes format in PySpark
我目前正在将 SQL 管道转换为 PySpark,但在将 SQL 的 from_hex
函数转换为 Pyspark 时遇到了一些困难。我看到一些解决方案涉及将字符串转换为 int,然后转换为十六进制字节,但这似乎效率很低。有没有一种有效的方法可以将十六进制字符串的列转换为十六进制字节?
对于上下文,我需要加入另一个已经是字节格式的 table:
on i.joining_column = from_hex(a.joining_column)
其中 i 已经是十六进制字节格式,a 是一个字符串。
如有任何帮助,我们将不胜感激!
我确实看到 this 是关于将字符串转换为整数,但不确定这对我的情况是否有用。
您可以使用内置函数 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
我目前正在将 SQL 管道转换为 PySpark,但在将 SQL 的 from_hex
函数转换为 Pyspark 时遇到了一些困难。我看到一些解决方案涉及将字符串转换为 int,然后转换为十六进制字节,但这似乎效率很低。有没有一种有效的方法可以将十六进制字符串的列转换为十六进制字节?
对于上下文,我需要加入另一个已经是字节格式的 table:
on i.joining_column = from_hex(a.joining_column)
其中 i 已经是十六进制字节格式,a 是一个字符串。
如有任何帮助,我们将不胜感激!
我确实看到 this 是关于将字符串转换为整数,但不确定这对我的情况是否有用。
您可以使用内置函数 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