【问题标题】:How to deal with concatenated Avro files?如何处理连接的 Avro 文件?
【发布时间】:2015-11-25 19:27:52
【问题描述】:

我正在以 Apache Avro 格式存储从我的 Web 应用程序生成的数据。数据经过编码并发送到 Apache Kinesis Firehose,该 Firehose 每隔 300 秒左右缓冲一次数据并将数据写入 Amazon S3。由于我有多个 Web 服务器,这会导致将多个 Avro 文件 blob 发送到 Kinesis,然后将它们连接起来并定期将它们写入 S3。

当我从 S3 抓取文件时,我无法使用普通的 Avro 工具对其进行解码,因为它实际上是多个文件合二为一。我想我可以添加一个分隔符,但如果记录的数据也具有相同的分隔符,这似乎有风险。

解决这个问题的最佳方法是什么?我在标准中找不到任何支持将多个 Avro 文件连接到同一个文件中的内容。

【问题讨论】:

  • 这个有改善吗?
  • 这方面有什么更新吗?

标签: apache-spark bigdata avro amazon-kinesis amazon-kinesis-firehose


【解决方案1】:

目前看来,firehose 不提供任何支持来处理您的用例,但它可以通过常规 kinesis 流实现。

您将数据发送到 kinesis 流,而不是发送到 firehose, 您定义自己的 AWS Lambda 函数(带有 kinesis 事件源),它从流中读取数据并将其作为 Avro 文件写入 S3,在这里您不会遇到 firehose 的问题,因为您已经知道它是 avro 格式(并且您可能拥有架构),因此您可以正确解码/编码(并立即将文件写入 S3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    相关资源
    最近更新 更多