有没有任何方法可以检查json文件中实际损坏的记录



我的Json文件看起来像这个

val json=
"""{
"a":1,
"b":2
"c":3
}"""
val data = spark.read.json(Seq(json).toDS())
val data2=data.toDF()
data2.show(false)

当我运行这段代码时,我得到了一个名为"_corrup_record"的表。我知道这是因为我在json字符串的第二行中缺少了一个","。

但是有什么方法可以识别实际错误吗。我想要像一样的打印报表

,在您的jsn文件""中的"b":2附近丢失

这里有两个独立的问题:

  1. Spark的JSON文件格式需要JSONlines格式的数据,即每行一条JSON记录。您的示例建议您的JSON记录跨越几行。如果您想直接使用Spark读取JSON,则必须修复此问题。

  2. 即使JSON是每行一条记录,也存在某些记录可能已损坏并包含无效JSON的用例。这个问题属于处理未知质量数据的一般模式。Spark的本机数据源不太适合执行此任务。因此,我们开放源代码的火花记录。(另请参阅本次Spark峰会演讲。(

spark记录提供了一个行级结构化日志,将错误、警告和调试/信息消息(包括完整的结构化堆栈跟踪(与嵌套原因与每行输入数据相关联。我们创建的spark记录正是针对不可信的JSON数据的用例。

使用Spark记录,您可以将数据加载为文本行,解析JSON并发出所需的任何错误、警告等。然后,您可以查询输出以将成功与失败区分开来,包括收集错误类型、原因等的统计信息。请参阅带有火花记录的根本原因分析。

最新更新