javascript - Spark 2.0.0 - JSON 格式错误的输出

标签 javascript json scala d3.js apache-spark

我正在使用 Spark 和 Scala 处理数据,并将其保存在 json

df2.write.mode("overwrite").json("mydata")

输出看起来像这样:

{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":10063}
{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":3142}
{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":7766}

我使用数据创建一个使用 d3 的可视化,使用 d3.json:

d3.json("mydata.json", function(d){
                console.log(d)
};

我的问题是 d3.js 期望 json 的格式如下:

[{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":10063},
{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":3142},
{"GPS_LAT":xx.xxxxx,"GPS_LONG":xx.xxxxx,"count":7766}]

谁错了? Spark 还是 d3?我可以做些什么来缓解这种情况而不必手动添加 [,]

最佳答案

我不了解 Spark,但我可以说这不是有效的 JSON,您只有一堆未包装在数组中的对象。所以,对于“谁错了?”,我会说 Spark。

但是有一个(丑陋的)解决方法。使用 d3.text 加载那个东西(那一堆对象):

d3.text("data.json", function(data){});

然后,您的data 将是一个字符串。下一步是用新行拆分字符串:

data = data.match(/[^\r\n]+/g);

然后,我们将其转换为一个对象数组:

data = data.map(function(d){
    return JSON.parse(d)
});

一起:

d3.text("data.json", function(data){

    data = data.match(/[^\r\n]+/g);
    data = data.map(function(d){
        return JSON.parse(d)
    });
    //now you can use 'data' here

});

检查这个插件中的控制台:https://plnkr.co/edit/ER1oXyWZL62dwxlgaenP?p=preview

而且,现在您有了一个对象数组,您可以将它传递给您的 D3 代码。

PS:如果数据中有日期,这可能不起作用。

关于javascript - Spark 2.0.0 - JSON 格式错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252609/

相关文章:

javascript - YYYY-MM-DDTHH格式的js中的相对时间函数:MM:SS+0000

json - 如何保护 webHttpBinding?

javascript - JSON.parse 功能失败,在控制台中工作

scala - 在 Play 框架 2.5 (Scala) 中使用 CSRF token 测试请求

scala - Scala 的 Actor 是否有任何非阻塞 IO 开源实现?

scala - 值 unsafePerformSync 不是 scalaz.concurrent.Task[String] 的成员

javascript date() 不适用于 IE

javascript - 在连接的 DynamoDB 表中传播更改的正确方法是什么

javascript - 遍历具有不同名称的表单字段

c# - json转c#反序列化