为SQLContext格式化JSON文件

为SQLContext格式化JSON文件,json,apache-spark,apache-spark-sql,Json,Apache Spark,Apache Spark Sql,我在加载依赖于输入JSON文件格式的JSON时遇到问题 根据JSON数据集上的Spark文档,输入文件上的每一行都必须是有效的JSON对象。关于: 请注意,作为json文件提供的文件不是典型的json文件。每行必须包含一个单独的、自包含的有效json对象。因此,常规多行json文件通常会失败 因此,如果我有一个输入JSON文件,例如: { "Year": "2013", "First Name": "DAVID", "County": "KINGS", "Sex": "M", "Count":

我在加载依赖于输入JSON文件格式的JSON时遇到问题

根据JSON数据集上的Spark文档,输入文件上的每一行都必须是有效的JSON对象。关于:

请注意,作为json文件提供的文件不是典型的json文件。每行必须包含一个单独的、自包含的有效json对象。因此,常规多行json文件通常会失败

因此,如果我有一个输入JSON文件,例如:

{
"Year": "2013",
"First Name": "DAVID",
"County": "KINGS",
"Sex": "M",
"Count": "272"
},
{
"Year": "2013",
"First Name": "JAYDEN",
"County": "KINGS",
"Sex": "M",
"Count": "268"
}
是否有任何现有工具或脚本可转换为:

{"Year": "2013","First Name": "DAVID","County": "KINGS","Sex": "M","Count":"272"},
{"Year": "2013","First Name": "JAYDEN","County": "KINGS","Sex": "M","Count": "268"}
其中JSON符合“每行必须包含一个单独的、自包含的有效JSON对象”

如果我将格式设置为上述样式,则一切都会按预期进行。但是,我在几行上手工制作了这些mod。我无法对整个数据集执行此操作,因此需要查找现有的脚本或工具

如果这是一个更好的选择,我可以加载到JDBC可用数据库。想法


提前感谢

您只需先使用
sc.wholeTextFiles()
将JSON文件加载到RDD中,然后删除文件名列,然后对RDD内容运行
SQLContext
读取

e、 g

val jsonRdd=sc.wholeTextFiles(“samplefile.json”).map(x=>x.\u 2)
val jsonDf=sqlContext.read.json(jsonRdd)

如果通过添加方括号将其设置为数组,该怎么办。像这样,

  [
    {
    "Year": "2013",
    "FName": "DAVID",
    "County": "KINGS",
    "Sex": "M",
    "Count": "272"
    },
    {
    "Year": "2013",
    "FName": "JAYDEN",
    "County": "KINGS",
    "Sex": "M",
    "Count": "268"
    }
    ]

如果我获取您的文件并添加括号,我可以使用Node.js对其进行迭代,并输出一个与您想要的类似的文件。node.js中的警告是,我不能有变量名——我必须将其更改为FName。

我应该提到,通过向wholeTextFiles传递一个通配符,可以在多个文件上运行它,其余的应按原样工作。这与node无关。ApacheSpark在多行JSON方面存在问题,OP想知道如何解决这个问题,并确保Spark接受有效的多行JSON