将Kafka值二进制负载转换为Azure数据块上的字符串

zlhcx6iw  于 2023-01-25  发布在  Apache
关注(0)|答案(1)|浏览(144)

我正在从Azure Databricks上的Azure ADLS Gen2存储帐户阅读Kafka json文件。我似乎无法将值二进制负载转换为字符串,以便执行from_json转换。我尝试了各种类型的强制转换,在所有情况下,原始二进制值都显示在最终转换中。
我试过了... df.selectExpr(“CAST(字符串形式的值)”)
以及.df.select(col(“值”).cast(“字符串”))
我知道我在做一些愚蠢的事情,因为这是一个微不足道的转变,但我不知道我做错了什么。
我正在使用Azure数据块运行时11.3 LTS ML
我使用的示例数据是Databricks Academy数据集

我期待上面的代码将其转换为人类可读的字符串格式,但最终转换为'值'是相同的原始二进制。

g52tjvyc

g52tjvyc1#

你所做的是正确的,让它成为一个字符串,但也许数据根本不是一个字符串?也许你的数据是实际上一个编码(base64,也许)/加密的字符串,或二进制负载,如Avro,Protobuf,等,这是人类不可读的。
如果不知道它是如何产生的,就不可能知道如何反序列化它;如果你阅读的是一个.json文件,正如你所说,那么Spark不关心文件扩展名...

相关问题