Chr*_*age 5 hadoop hive azure avro azure-blob-storage
我问我是否可以,但我也想知道我是否应该这样做。
这是我的场景:我正在小批量接收 Avro 序列化消息。我想存储它们以供以后使用 Hive 表和 Avro SerDe 进行分析。我在 Azure 中运行,并将消息存储在 blob 中。我试图避免出现很多小斑点(因为我相信这会对 Hive 产生负面影响)。如果我已经将 Avro 标头写入 blob,我相信可以将 Avro 数据块附加到CloudBlockBlob.PutBlockAsync(). (只要我知道同步标记即可。)
但是,我检查了两个 .NET 库,它们似乎不支持我的方法。(我必须立即编写整个 Avro 容器文件)。
我采取的方法正确吗? 我在图书馆里错过了什么吗?
我的问题与此类似(但不同): 您可以将数据附加到现有的 Avro 数据文件吗?
简而言之,我试图做错事。
首先,我们认为 Avro 不是适合在线序列化的格式。主要是因为 Avro 希望架构定义出现在每个 Avro 文件中。这给传输的内容增加了很多重量。您仍然可以使用 Avro,但这不是它的设计目的。(它是为 HDFS 上的大文件设计的。)
其次,现有的库(针对 .NET)仅支持通过流附加到 Avro 文件。这不能很好地映射到 Azure 块 blob(您不想将块 blob 作为流打开)。
第三,即使可以绕过前两个,单个 Avro 文件中的所有项目也应该共享相同的架构。我们有一组异构项目流入,我们想要缓冲、批处理并写入 blob。当我们将项目写入 blob 时,尝试按类型/模式隔离项目会增加很多复杂性。最终我们选择使用JSON。
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |