2017-06-27 24 views
0

我有两个Jsons,它们如下所示。我们的生产系统将多个Jsons聚合为单个文件,如下所示。我的问题在于如何拆分由逗号分隔的单个jsons(i,e 1 & 2)并从文件中删除3。 1,2和3之间的差为3多年平均值具备的条件IDHive在单个文件中拆分两个相同的Jsons,以逗号分隔

1---{name:string, 
     actid: string, 
     data:array<struct>, 
     conditionId:string 
    }, 
2---{name:string, 
     actid: string, 
     data:array<struct>, 
     conditionId:string 
    }, 
3---{name:string, 
     actid:string, 
     data:array<struct> 
    } 

回答

1

如果你有数据的文本文件作为

1--- {name:string, actid: string, data:array, conditionId:string }, 2---{name:string, actid: string, data:array, conditionId:string}, 3---{name:string, actid:string, data:array} 

如果你正在寻找filter畸形的JSON作为3和将文件保存为有效json文件,那么你可以在spark

val data = sc.textFile("path to the malformed input file") 
data.flatMap(line => line.split("---")) 
    .map(array => array.split(",")) 
    .filter(_.length > 3) 
    .map(array => conditions(array(0).split(":")(1), array(1).split(":")(1), array(2).split(":")(1), array(3).split(":")(1).replace("}", ""))) 
    .toDF() 
    .write.json("path to output json file") 

你应该甲肝使用如下代码e为有效的JSON文件作为

{"name":"string","actid":" string","data":"array","conditionId":"string "} 
{"name":"string","actid":" string","data":"array","conditionId":"string"} 
+0

@RameshMaharajan谢谢你的反应是有什么办法让它动态筛选的畸形的JSON,因为其中有3个文件6-10 – user2014111

+0

对不起之间发生不理解你的问题。你能给个例子吗。? –