【问题标题】:Concat Avro files in Google Cloud StorageGoogle Cloud Storage 中的 Concat Avro 文件
【发布时间】:2021-01-22 12:13:10
【问题描述】:

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

我明白了

java -jar avro-tools.jar concat

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

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage avro gsutil avro-tools


    【解决方案1】:

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

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

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

    在我的案例中,我使用以下值对其进行了测试:foo.txt 包含一个单词 Hello 并且 bar.txt 包含一个单词 世界。运行此命令:

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

    baz.txt 会返回:

    Hello
    World
    

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

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

    【讨论】:

    • 这是一个非常好的选择!但是,它对 avro 有用吗? (由于标题)
    • 目前还没有任何标志可以让您跳过标题,为此,您可能必须编写自己的应用程序来处理连接。其他 users 已经在他们的 csv 用例中完成了这项工作。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2015-08-01
      • 2014-09-08
      • 2018-10-17
      • 2015-07-07
      • 1970-01-01
      • 2018-04-22
      相关资源
      最近更新 更多