Spark 2.0.0 - JSON格式错误输出
Spark 2.0.0 - JSON malformed output
我正在用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:如果数据中有日期,这可能不工作。
我们也可以有一个小的shell
脚本:
sed -i '' 's/}/},/g' file # Add comma between each line
sed -i '' '$ s/.$/]/' file # Replace last comma with ]
sed -i '' '1s/^/[/' file # Add [ at beginning of file
相关文章:
- Datetime格式为Friendly Time.Moment JS输出错误
- 一个ajax循环有两个输出错误innerHTML
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 正则表达式给出错误的输出
- 比较两个值时出现JavaScript输出和控制流错误
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- Jasmine与Jasminece:输出错误到控制台
- 为什么我的Alexa技能测试显示正确的lambda输出,但在开发人员控制台中测试时却给出错误消息
- 使用 json_encode() 和 JSON.parse 后地址数组中的错误输出
- 如何在控制台中防止/捕获http错误输出
- JSMin 错误输出
- Unix 时间戳转换为 JavaScript 的错误输出
- 角度代码覆盖率错误输出
- 断言错误 - 输出有噪音.如何仅显示断言
- HTML javascript函数问题.[object HTMLInputElement]错误输出
- Javascript try-catch错误输出被截断
- Spark 2.0.0 - JSON格式错误输出
- 流星编译-错误输出不显示错误在哪里
- 单元测试错误输出"致命错误:在结束"之后写入
- 返回错误输出的Javascript条件语句