【问题标题】:Combining 100 json files from BigQuery that have the same structure [closed]结合 BigQuery 中具有相同结构的 100 个 json 文件 [关闭]
【发布时间】:2018-03-09 04:13:48
【问题描述】:

我必须从 BigQuery 中将一个表 (3.8GB) 导出到 GCP 中,这会将我的表分成 100 个较小的 json 文件,每个文件 100mb。 现在我希望能够将它们放回一个 json 文件中。有没有有效的方法来做到这一点?它可能在 R、Python、Java 中。 或者,如果有人知道处理这些文件的更好方法,我感谢您的帮助。

【问题讨论】:

    标签: java python json r google-bigquery


    【解决方案1】:

    您可以使用一个命令将 GCS 中的多个文件组合成一个新的大文件:

    gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/composite
    

    请注意,单个操作中可以组合的组件数量有限制(目前为 32 个)。

    给定复合对象的组件总数有一个限制(当前为 1024)。这意味着您最多可以附加到每个对象 1023 次。

    每个项目的速率限制(当前为 200)限制您每秒可以编写的组件数量。此比率既计算附加到复合对象的组件,也计算复制它们所属的复合对象时复制的组件。

    【讨论】:

    • 谢谢Felipe,当您只想合并几个文件但对我来说不完全时,这会更好,因为我必须输入每个文件..(如果我理解正确的话。)顺便说一句,我看了你的一些 youtube 视频,很高兴在这里见到你!
    • 用 * glob 试试?
    • 是的,这行得通!谢谢!
    【解决方案2】:

    另一种选择是使用 Cloud Dataflow。可能有点矫枉过正,但效果很好。我已经写了一个你可以使用的管道,所以你不需要自己编写代码:https://github.com/shinesolutions/bigquery-table-to-one-file

    【讨论】:

    • 这看起来不错,但不幸的是我无法访问 Cloud Dataflow....
    • 为什么不呢?如果您可以访问 BQ,那么 Dataflow 应该是轻而易举的事。它只是 Google Cloud Platform 的一部分。
    【解决方案3】:

    在 Java 中, 为此,我将编写一个脚本,该脚本首先将一个文件转换为您的 json 数据的对象。在任何循环中,我都会对你的 100 个文件做同样的事情,并将这些对象设置到列表中。这样我就可以使用 Jackson 库轻松地将该列表写入单个文件。

    要将您的 Json 文件数据转换为 Pojo,您可以借助以下提到的网站: http://pojo.sodhanalibrary.com/

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2017-04-25
      相关资源
      最近更新 更多