如何将此 pyspark 二进制列转换为字符串?

How to convert this pyspark binary column to string?

我有以下 Pyspark 数据框:

df = spark.sql("select unhex('0A54C9E024AA62F9EF8BE39231782F9240B51CFB82D1CF7586F734EE07B51086') as db_key")

如您所见,它只有一列“db_key”,只有一个值:对该标记 0A54C9E024AA62F9EF8BE39231782F9240B51CFB82D1CF7586F734EE07B51086 执行操作 unhex 的结果。如果我在前一个数据帧上执行 display,我会得到以下结果:

display(df)

但是如果我执行 show() 我会得到这个结果:

df.show()

我想获得与 display 相同的字符串,但使用 show()。我试过这样转换,但结果不是我想要的:

df = spark.sql("select cast(unhex('0A54C9E024AA62F9EF8BE39231782F9240B51CFB82D1CF7586F734EE07B51086') AS STRING) as db_key")
df.show()

我能做什么?

当你在末尾看到一个=(等号)时,它可能与base64相关。 幸运的是,在 Spark 中有一个内置函数 base64 :

from pyspark.sql import functions as F


df.withColumn("db_key_str", F.base64(F.col("db_key"))).show()
+--------------------+--------------------+
|              db_key|          db_key_str|
+--------------------+--------------------+
|[0A 54 C9 E0 24 A...|ClTJ4CSqYvnvi+OSM...|
+--------------------+--------------------+