Abh*_*hek 82 hadoop avro parquet
我打算在hadoop相关项目中使用hadoop文件格式之一.我知道实木复合地板对于基于列的查询是有效的,而avro可用于全扫描或当我们需要所有列数据时!
在我继续选择其中一种文件格式之前,我想了解一种文件格式的缺点/缺点.任何人都可以用简单的语言向我解释一下吗?
ste*_*r25 51
如果您还没有决定,我会继续为您的数据编写Avro架构.一旦完成,在Avro容器文件和Parquet文件之间进行选择就像交换一样简单,例如,
job.setOutputFormatClass(AvroKeyOutputFormat.class);
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());
Run Code Online (Sandbox Code Playgroud)
对于
job.setOutputFormatClass(AvroParquetOutputFormat.class);
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());
Run Code Online (Sandbox Code Playgroud)
Parquet格式似乎在写入方面的计算密集程度更高 - 例如,需要RAM用于缓冲和CPU用于订购数据等,但它应该降低I/O,存储和传输成本以及提高效率特别是使用类似SQL的(例如,Hive或SparkSQL)查询来读取只能查询部分列的查询.
在一个项目中,我最终从Parquet恢复到Avro容器,因为模式过于广泛和嵌套(从一些相当分层的面向对象的类派生)并导致1000个Parquet列.反过来,我们的行组实际上是宽而浅的,这意味着我们可以在每个组的最后一列中处理少量行之前花费很长时间.
我没有太多机会使用Parquet获得更多标准化/合理的数据,但据我所知,如果使用得当,它可以显着提高性能.
Ara*_*mar 47
Avro是一种基于行的格式.如果要整体检索数据,可以使用Avro
Parquet是基于列的格式.如果您的数据包含很多列,但您对列的子集感兴趣,那么您可以使用Parquet
当您经常更新数据时,HBase非常有用.Avro检索速度快,Parquet更快.
sec*_*ree 33
Avro公司
实木复合地板
从选择HDFS数据存储格式 - Avro vs. Parquet等等
小智 22
两种格式的使用取决于用例.根据3个因素,我们可以选择在我们的案例中选择哪种格式:
读/写操作:Parquet是基于列的文件格式,因此支持索引,因此它适用于读取密集型,复杂或分析性查询,低延迟数据.这通常由最终用户/数据科学家使用.而AVRO是一种基于行的文件格式,最适合写入密集型操作.这通常由数据工程师使用.两者都支持序列化和压缩格式.
工具:Parquet最适合Impala(有MPP引擎),因为它负责复杂/交互式查询和低延迟输出.这得到了CDH的支持.像这样HDP支持ORC格式(选择也取决于hadoop分布).而Avro最适合Spark处理.
模式演变:意味着通过转换和处理来更改数据模式.Parquet和Avro都支持模式演变,但在某种程度上.相比之下,Avro提供了更丰富的Schema演变.当我们进行一些追加操作(如添加列)时,Parquet很好,但Avro适用于追加,删除和修改操作.与Parquet相比,Avro在这里闪耀得更好.
你的理解是正确的.事实上,我们在DWH中的数据迁移过程中遇到了类似的情况.我们选择Parquet over Avro,因为我们获得的磁盘节省几乎是我们用AVro获得的两倍.此外,查询处理时间比Avro好得多.但是,是的,我们的查询基于聚合,基于列的操作等.因此,Parquet可以说是一个明显的赢家.
我们正在使用CDH发行版的Hive 0.12.你提到你遇到了Hive + Parquet的问题,那是什么?我们没有遇到任何问题.
Silver Blaze 用一个示例用例很好地进行了描述,并描述了 Parquet 如何成为他的最佳选择。根据您的要求考虑一个而不是另一个是有意义的。我也在简要描述不同的其他文件格式以及时间空间复杂度比较。希望有帮助。
您可以在 Hive 中使用多种文件格式。值得注意的是 AVRO、Parquet。RCFile & ORC。如果您想比较这些文件格式的性能和空间利用率,可以参考一些在线不错的文档。遵循一些有用的链接,可以帮助您前进。
上面给出的链接会让你继续。我希望这能回答您的疑问。
谢谢!
| 归档时间: |
|
| 查看次数: |
68050 次 |
| 最近记录: |