【发布时间】:2018-12-09 23:52:32
【问题描述】:
我需要考虑如何将我的数据写入 Hadoop。
我正在使用 Spark,我从 Kafka 主题收到一条消息,每条消息都在 JSON 记录中。
我每天有大约 200B 条记录。
数据字段可能会发生变化(不是很多,但将来可能会发生变化),
我需要快速写入和快速读取,磁盘空间小。
我应该选择什么? Avro 还是 Parquet?
我还看了下面的https://community.hitachivantara.com/community/products-and-solutions/pentaho/blog/2017/11/07/hadoop-file-formats-its-not-just-csv-anymore和Avro v/s Parquet
但还是不知道该选什么,
有什么建议吗?
【问题讨论】:
-
也许两者兼而有之。查看 Uber 的 Hoodie —— 为什么他们需要一个用于“热”数据的数据存储,包括突变(更新/删除操作),以及另一个用于“冷”数据的读取优化数据存储,并具有增量合并“热”与“冷”之分;加上顶部的抽象,以便在阅读时点击两者。就像 HBase 或 Cassandra 或 RocksDB 所做的那样,但用于随机键/值访问,而 Uber 需要它用于批量读取和分析。
-
另外,JSON 很冗长。非常冗长。在大规模情况下,Kafka 可能会开始因庞大的体积而窒息——除非你切换到 AVRO 或类似的东西(Criteo 选择了 Protobuf)或者找出最好的压缩选项(CloudFlare 做过的事情,blog.cloudflare.com/squeezing-the-firehose)
标签: apache-spark hadoop hive avro parquet