使用Spark Scala将数组[Byte]转换为JSON格式

使用Spark Scala将数组[Byte]转换为JSON格式,json,scala,apache-spark,apache-spark-sql,spark-avro,Json,Scala,Apache Spark,Apache Spark Sql,Spark Avro,我正在读一个.avro文件,其中特定列的数据是二进制格式的。为了便于阅读,我目前正在UDF的帮助下将二进制格式转换为字符串格式,最后我需要将其转换为JSON格式,以便进一步解析数据。是否有一种方法可以使用Spark Scala代码将字符串对象转换为JSON格式 任何帮助都将不胜感激 val avroDF = spark.read.format("com.databricks.spark.avro"). load("file:///C:/46.avro") import org.apache.s

我正在读一个.avro文件,其中特定列的数据是二进制格式的。为了便于阅读,我目前正在UDF的帮助下将二进制格式转换为字符串格式,最后我需要将其转换为JSON格式,以便进一步解析数据。是否有一种方法可以使用Spark Scala代码将字符串对象转换为JSON格式

任何帮助都将不胜感激

val avroDF = spark.read.format("com.databricks.spark.avro").
load("file:///C:/46.avro")

import org.apache.spark.sql.functions.udf

// Convert byte object to String format

val toStringDF = udf((x: Array[Byte]) => new String(x))


val newDF = avroDF.withColumn("BODY", 
toStringDF(avroDF("body"))).select("BODY")
newDF的输出如下所示:

BODY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
|{"VIN":"FU74HZ501740XXXXX","MSG_TYPE":"SIGNAL","TT":0,"RPM":[{"E":1566800008672,"V":1073.75},{"E":1566800002538,"V":1003.625},{"E":1566800004084,"V":1121.75}
我希望的输出如下所示:

我不知道您是否需要通用解决方案,但在您的特定情况下,您可以编写如下代码:

spark.read.json(newDF.as[String])
    .withColumn("RPM", explode(col("RPM")))
    .withColumn("E", col("RPM.E"))
    .withColumn("V", col("RPM.V"))
    .drop("RPM")
    .show()

你的身体不是已经是json格式了吗?如果您希望将该json字符串转换为正确的数据帧,则可能会有所帮助。请参阅将json字符串转换为正确的数据帧(无需使用
spark.read.json()
)重新读取数据)