在Spark Dataframe中解码Base64

时间:2018-07-19 11:05:27

标签: apache-spark pyspark databricks

+----+-------------+----------+---------+
| key|        value|     topic|partition| 
+----+-------------+----------+---------+
|null|dGVzdF90ZXh0 |Topic.Name|        0|
|null|dGVzdF90ZXh0 |Topic.Name|        0|
|null|dGVzdF90ZXh0 |Topic.Name|        0|
+----+-------------+----------+---------+

df_1

我有一个Spark数据框,其中的列(值)是Base64编码的。我希望能够在数据框的末尾添加一列,其中包含未编码的版本。

import base64

df_2 = df_1.withColumn('unencoded_base64',base64.b64decode(df_1.value))

上面的代码给我错误:

TypeError: a2b_base64() argument 1 must be convertible to a buffer, not Column

1 个答案:

答案 0 :(得分:2)

您可以为此使用unbase64内置函数

from pyspark.sql.functions import unbase64
df_2 = df_1.withColumn('unencoded_base64', unbase64(df_1.value))

应该给您

+----+------------+----------+---------+----------------------------+
|key |value       |topic     |partition|unencoded_base64            |
+----+------------+----------+---------+----------------------------+
|null|dGVzdF90ZXh0|Topic.Name|0        |[74 65 73 74 5F 74 65 78 74]|
|null|dGVzdF90ZXh0|Topic.Name|0        |[74 65 73 74 5F 74 65 78 74]|
|null|dGVzdF90ZXh0|Topic.Name|0        |[74 65 73 74 5F 74 65 78 74]|
+----+------------+----------+---------+----------------------------+

我希望答案会有所帮助