如何在格式无效的 JSON 文件中删除一行

Posted

技术标签:

【中文标题】如何在格式无效的 JSON 文件中删除一行【英文标题】:How to drop a row in a JSON file with invalid format 【发布时间】:2022-01-07 21:30:42 【问题描述】:

我目前正在从事一项 scala 作业,该作业会将 JSON 文件中的数据提取到 Hive 表中,但我确实遇到了一些具有无效格式的行/条目的文件。示例如下:

["name":"John", "age":30, "address":"15 yemen road Yemen",
"name":"John", "age":30, "address":"",15 yemen road Yemen"]

第二个条目上的地址是导致失败的原因,我们的想法是删除该行。我已经尝试添加DROPMALFORMED 模式但仍然无法正常工作。

【问题讨论】:

【参考方案1】:

您可能希望删除方括号并将输入转换为 NLJSON 格式:每行一个 JSON 对象。

"name":"John", "age":30, "address":"15 yemen road Yemen"
"name":"John", "age":30, "address":"",15 yemen road Yemen"

使用该输入,Spark 设置 DROPMALFORMED 将删除错误的,而现在它将删除整个数组。

参照。 Spark DataFrameReader

"加载一个 JSON 文件(每行一个对象)并将结果作为 DataFrame 返回"

【讨论】:

以上是关于如何在格式无效的 JSON 文件中删除一行的主要内容,如果未能解决你的问题,请参考以下文章

如何防止VSCode自动格式删除json文件末尾的新行?

oracle如何把一行数据自动拼接成json格式数据

如何从 venv 中删除无效的需求? (pycharm?)[重复]

在 pyspark 的 StructStreaming 中;如何将 DataFrame 中的每一行(json 格式的字符串)转换为多列

如何在 C# 中删除 Json 数据的标头名称

如何删除一个无限长路径的文件夹(别说robocopy、金山粉碎机啥的 用过无效)解决追加100+