2

我在 Google Cloud Storage 中有一些大.avro文件,我想将它们全部合并到一个文件中。

我有

java -jar avro-tools.jar concat

但是,由于我的文件位于 google 存储路径中:gs://files.avro我无法使用 avro-tools 连接它们。关于如何解决它的任何建议?

4

2 回答 2

1

您可以使用该gsutil compose命令。例如:

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

注意:对于非常大的文件和/或非常低的每台机器带宽,您可能需要拆分文件并从多台机器上传,然后手动组合文件的这些部分。

在我的案例中,我使用以下值对其进行了测试:foo.txt包含一个词Hellobar.txt包含一个词World。运行此命令:

gsutil compose gs://bucket/foo.txt gs://bucket/bar.txt gs://bucket/baz.txt

baz.txt将返回:

Hello
World

注意:GCS 不支持跨桶组合。

以防万一您在完整性检查方面遇到异常错误,请运行gsutil help crcmod以获取有关如何修复它的说明。

于 2020-10-07T18:23:48.587 回答
0

查看https://github.com/spotify/gcs-tools

轻量级包装器,将 Google Cloud Storage (GCS) 支持添加到常见 Hadoop 工具中,包括avro-tools、parquet-cli、Avro 文件中用于 Scio 的 Protobuf 的 proto-tools 以及用于 Magnolify 代码生成的 magnolify-tools,以便它们可以在 Google Compute Engine (GCE) 实例之外的常规工作站或笔记本电脑上使用。

于 2021-10-13T20:07:29.443 回答