【问题标题】:JSON sorting in JavaJava中的JSON排序
【发布时间】:2017-03-22 09:59:37
【问题描述】:

我有一个巨大的 JSON 文件 (400MB)。我想按时间戳排序。你有什么想法,我该怎么做?

我用循环创建了一个程序,对小文件进行排序,但是我的文件太大了,我得到了一个不定式循环。

enter image description here

【问题讨论】:

  • 请将有用的 JSON 内容示例发布为文本,而不是图像。还发布您到目前为止尝试过的代码。
  • 请注意,一些 JSON 库是建立在 reordering might not take effect (last paragraph) 的哈希映射或字典上。 JSON 中唯一保证排序的元素是数组。最好的解决方法是使用一组排序的键,这些键与实际的 JSON 数据 IMO 一起提供。

标签: java json sorting bigdata


【解决方案1】:

使用库big-sorter,如下所示。

Sorter 
  .serializer(Serializer.jsonArray()) 
  .comparator((x, y) -> 
    x.get("time").asText().compareTo(y.get("time").asText())) 
  .input(new File("input.json")) 
  .output(new File("sorted.json")) 
  .sort();

使用这种方法,我在 54 秒内对一个 440MB 文件中的 1000 万条记录进行了排序,最大堆设置为 64MB (-Xmx64m)。

【讨论】:

    【解决方案2】:

    我会创建一个实现 Comparable 的对象 T。对象 T 应该代表 Json 文件中的一个条目。

    然后我会使用 Gson 将 Json 加载到对象 T 的列表中。

    然后你可以在你的列表上做一个 Collections.sort。

    【讨论】:

    • 哇,比如简单直接的解决方案,可能你应该向 OP 询问那个 400mb json 并且你必须先尝试你的解决方案。顺便说一句,到目前为止我还没有对你的帖子投反对票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多