【发布时间】:2018-03-09 04:13:48
【问题描述】:
我必须从 BigQuery 中将一个表 (3.8GB) 导出到 GCP 中,这会将我的表分成 100 个较小的 json 文件,每个文件 100mb。 现在我希望能够将它们放回一个 json 文件中。有没有有效的方法来做到这一点?它可能在 R、Python、Java 中。 或者,如果有人知道处理这些文件的更好方法,我感谢您的帮助。
【问题讨论】:
标签: java python json r google-bigquery
我必须从 BigQuery 中将一个表 (3.8GB) 导出到 GCP 中,这会将我的表分成 100 个较小的 json 文件,每个文件 100mb。 现在我希望能够将它们放回一个 json 文件中。有没有有效的方法来做到这一点?它可能在 R、Python、Java 中。 或者,如果有人知道处理这些文件的更好方法,我感谢您的帮助。
【问题讨论】:
标签: java python json r google-bigquery
您可以使用一个命令将 GCS 中的多个文件组合成一个新的大文件:
gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/composite
请注意,单个操作中可以组合的组件数量有限制(目前为 32 个)。
给定复合对象的组件总数有一个限制(当前为 1024)。这意味着您最多可以附加到每个对象 1023 次。
每个项目的速率限制(当前为 200)限制您每秒可以编写的组件数量。此比率既计算附加到复合对象的组件,也计算复制它们所属的复合对象时复制的组件。
【讨论】:
另一种选择是使用 Cloud Dataflow。可能有点矫枉过正,但效果很好。我已经写了一个你可以使用的管道,所以你不需要自己编写代码:https://github.com/shinesolutions/bigquery-table-to-one-file
【讨论】:
在 Java 中, 为此,我将编写一个脚本,该脚本首先将一个文件转换为您的 json 数据的对象。在任何循环中,我都会对你的 100 个文件做同样的事情,并将这些对象设置到列表中。这样我就可以使用 Jackson 库轻松地将该列表写入单个文件。
要将您的 Json 文件数据转换为 Pojo,您可以借助以下提到的网站: http://pojo.sodhanalibrary.com/
【讨论】: