Avro v / s镶木地板

我打算为我的hadoop相关项目使用一个hadoop文件格式。 我知道实木复合地板是有效的基于列的查询和avro全面扫描或当我们需要所有的列数据!

在我继续select一种文件格式之前,我想先了解一个文件格式的缺点和弊端。 任何人都可以用简单的语言来解释一下吗?

如果你还没有决定,我会继续为你的数据写Avro模式。 一旦完成,在Avro容器文件和Parquet文件之间进行select就像换出一样简单,

job.setOutputFormatClass(AvroKeyOutputFormat.class); AvroJob.setOutputKeySchema(MyAvroType.getClassSchema()); 

对于

 job.setOutputFormatClass(AvroParquetOutputFormat.class); AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema()); 

在写入方面,Parquet格式似乎在计算上更encryption集 – 例如,需要RAM来caching数据,CPU要求数据等等,但是它应该减lessI / O,存储和传输成本以及高效尤其是使用类似于SQL的查询(例如Hive或SparkSQL)来查询只处理部分列的查询。

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

我没有太多的机会使用Parquet来获得更多的标准化/理性数据,但是我明白,如果使用得当,它可以显着提高性能。

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

实木复合地板是基于列的格式。 如果您的数据由许多列组成,但您对列的子集感兴趣,那么您可以使用Parquet

当您频繁更新数据时,HBase非常有用。 Avro检索速度快,Parquet速度更快。

你的理解是对的。 事实上,我们在DWH的数据迁移过程中遇到了类似的情况。 我们在Avro上select了Parquet,因为我们得到的磁盘节省了近一倍,比我们用AVro得到的还要多。同时,查询处理时间比Avro好得多。 但是,是的,我们的查询是基于聚合,基于列的操作等,因此Parquet是一个明显的赢家。 我们使用CDH发行版中的HIVE 0.12。 YOu提到你遇到了Hive + Parquet的问题,那是什么? 我们没有遇到任何 希望这可以帮助。

Avro公司

  • 广泛用作序列化平台
  • 基于行,提供了一个紧凑和快速的二进制格式
  • 模式在文件上编码,所以数据可以不标记
  • 文件支持块压缩,可以分割
  • 支持模式演变

实木复合地板

  • 面向列的二进制文件格式
  • 使用Dremel论文中描述的logging粉碎和assemblyalgorithm
  • 每个数据文件都包含一组行的值
  • 在需要查询特定列时的磁盘I / O方面有效

从selectHDFS数据存储格式 – Avro与Parquet等等

Silver Blaze将一个典型用例描述得很好,并描述了Parquet如何成为他的最佳select。 根据你的要求考虑一个是合理的。 我也随着时间空间复杂度的比较,对其他不同的文件格式做了简单的描述。 希望有所帮助。

有许多可以在Hive中使用的文件格式。 值得一提的是AVRO,Parquet。 RCFile&ORC。 如果您想比较这些文件格式的性能和空间利用率,可以在线提供一些很好的文档。 遵循一些有用的链接,将让你去。

这个博客文章

这个从MapR的链接[他们不讨论拼花地板]

这从Inquidia链接

以上给出的链接将让你去。 我希望这回答您的查询。

谢谢!

只是为了描述实木复合地板,你可以参考这里: http : //bigdata.devcodenote.com/2015/04/parquet-file-format.html

我打算很快写在Avro上,还有两者之间的比较。 一旦完成,将在这里发布。