首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Avro诉Parquet

Avro诉Parquet
EN

Stack Overflow用户
提问于 2015-03-10 06:19:13
回答 5查看 107.8K关注 0票数 124

我计划在hadoop相关项目中使用hadoop文件格式之一。我理解拼板对于基于列的查询是有效的,对于全扫描或当我们需要所有列数据时,也是有效的!

在继续并选择其中一种文件格式之前,我希望了解其中一种格式与另一种格式的缺点/缺点。有人能简单地向我解释一下吗?

EN

回答 5

Stack Overflow用户

发布于 2016-01-29 00:45:00

Avro是一种基于行的格式。如果要检索整个数据,可以使用Avro

拼花是一种基于列的格式。如果您的数据包含许多列,但您对列的子集感兴趣,则可以使用Parquet

当涉及数据的频繁更新时,HBase是有用的。Avro的检索速度快,Parquet的检索速度快得多。

票数 69
EN

Stack Overflow用户

发布于 2015-04-30 22:40:47

如果您还没有决定,我会继续为您的数据编写Avro模式。一旦完成,在Avro容器文件和Parquet文件之间的选择就像交换文件一样简单,例如,

代码语言:javascript
复制
job.setOutputFormatClass(AvroKeyOutputFormat.class);
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());

代码语言:javascript
复制
job.setOutputFormatClass(AvroParquetOutputFormat.class);
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());

在编写方面,Parquet格式似乎需要更多的计算量--例如,需要RAM来缓冲,需要CPU来排序数据等等,但它应该减少I/O、存储和传输成本,并提高读取效率,特别是使用类似SQL的查询(例如,Hive或SparkSQL),这些查询只处理部分列。

在一个项目中,我最终从Parquet恢复到Avro容器,因为模式过于广泛和嵌套(来自于一些相当分层的面向对象类),并导致了1000 s的Parquet列。反过来,我们的行组又宽又浅,这意味着我们要花费很长时间才能在每个组的最后一列处理少量行。

我还没有多少机会使用Parquet进行更多的规范化/正常数据,但我理解如果使用得好,它将允许显着地提高性能。

票数 68
EN

Stack Overflow用户

发布于 2017-09-17 06:02:47

阿夫罗

  • 广泛用作序列化平台。
  • 基于行的,提供一种紧凑和快速的二进制格式。
  • 架构是在文件上编码的,因此数据可以被取消标记。
  • 文件支持块压缩,并且是可拆分的。
  • 支持模式演化

[消]拼花

  • 面向列的二进制文件格式
  • 使用Dremel文件中描述的记录分解和组装算法。
  • 每个数据文件都包含一组行的值。
  • 在需要查询特定列时磁盘I/O方面的效率

来自选择HDFS数据存储格式- Avro vs.等

票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28957291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档