【发布时间】:2015-06-29 16:34:03
【问题描述】:
我目前有一个占用大量空间的文件目录。我想将这些文件中的每一个压缩并序列化为二进制 Avro 格式以释放磁盘空间。 Avro 数据文件的架构将只是一个包含单个字段的记录,用于存储原始文件的内容。我正在考虑使用 Apache 提供的 avro-tools jar 中的实用程序来序列化每个文件。该实用程序采用 Avro 模式和包含要以 JSON 格式序列化的记录的输入文件,并生成 Avro 数据文件:
$ java -jar ~/avro-tools-1.7.6.jar fromjson --schema-file twitter.avsc twitter.json > twitter.avro
我想编写一个 bash 脚本,为文件夹中的每个文件执行此工具,但我不确定如何以工具期望的 JSON 格式为每个文件形成等效记录。每个文件的大小为数百 MB。我想知道是否可以使用命令行中的文本处理命令或工具(awk、sed 等)来为文件({'content':'file content..'})形成 JSON。此外,有没有比我正在研究的方法更好的方法来完成更大的任务,将多个文件迁移到 Avro 存储?
谢谢。
【问题讨论】:
-
可能听起来像一个愚蠢或愚蠢的评论,但我还是想说,因为我不清楚你的目标是什么。如果您的目标是释放磁盘空间,为什么不使用 TAR/ZIP 来压缩文件。
标签: serialization text-processing avro