首页 > 解决方案 > 如何防止带有kafka的spark sql向数据框中的JSON字符串添加反斜杠

问题描述

由于某种原因,当我执行代码 .wriestream.format(json).option(Path)。我有 json 并且由于某种原因标签都有双“\”。我想删除所有的“\”。

val selectData = kafkaDF.select(($"value" cast "string"))
val query = selectData
  .writeStream
  .format("json")
  .option(path)

标签: jsonscalaapache-sparkapache-spark-sql

解决方案


您正在将该值转换为一个字符串,其中已经包含引号和斜杠,然后您正在编写为 JSON,因此它对您的 JSON 进行了双重编码。

试着写成文字

kafkaDF.select(($"value" cast "string")).writeStream.format("text")

或者根本不投射

kafkaDF.select("value").writeStream.format("json")

如果您正在写入 HDFS 或 S3 等文件系统,那么我建议您使用 Kafka Connect,而不是编写和维护 Spark 代码。


推荐阅读