在 Google 云存储中连接 Avro 文件

Concat Avro files in Google Cloud Storage

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

我得到了

java -jar avro-tools.jar concat

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

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

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

Note: For extremely large files and/or very low per-machine bandwidth, you may want to split the file and upload it from multiple machines, and later compose these parts of the file manually.

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

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

baz.txt 会 return:

Hello
World

Note: GCS does not support inter-bucket composing.

以防万一您遇到有关 integrity checks 的异常错误,运行 gsutil help crcmod 获取有关如何修复它的说明。

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

Light weight wrapper that adds Google Cloud Storage (GCS) support to common Hadoop tools, including avro-tools, parquet-cli, proto-tools for Scio's Protobuf in Avro file, and magnolify-tools for Magnolify code generation, so that they can be used from regular workstations or laptops, outside of a Google Compute Engine (GCE) instance.