首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hive在单个文件中拆分两个相同的Json,用逗号分隔

Hive在单个文件中拆分两个相同的Json,用逗号分隔
EN

Stack Overflow用户
提问于 2017-06-27 09:42:21
回答 1查看 105关注 0票数 0

我有两个Json,它们作为below.our生产系统连接,将多个Json聚合到单个文件中,如下所示。我这里的问题是如何拆分由逗号分隔的单个json(即1&2),并从文件中删除3。%1、%2和%3之间的差异是%3没有条件ID

代码语言:javascript
复制
 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>
     }
EN

回答 1

Stack Overflow用户

发布于 2017-06-27 10:10:54

如果您有一个包含以下数据的文本文件

代码语言:javascript
复制
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}

如果您希望将格式错误的json filter3,并将该文件另存为有效的json文件,则可以在spark中使用以下代码

代码语言:javascript
复制
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")

您应该有一个包含有效json的文件。

代码语言:javascript
复制
{"name":"string","actid":" string","data":"array","conditionId":"string "}
{"name":"string","actid":" string","data":"array","conditionId":"string"}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44771131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档