搭配Arvo,Kryo和Parquet的Spark

Mat*_*nes 7 kryo apache-spark parquet

我很难理解Arvo,Kryo和Parquet究竟在Spark的背景下做了什么.它们都与序列化有关,但我看到它们一起使用,所以它们不能做同样的事情.

Parquet将其自身描述为柱状存储格式,我有点理解但是当我保存镶木地板文件时,Arvo或Kryo可以与它有什么关系吗?或者它们仅在火花工作期间相关,即.在洗牌或溢出到磁盘期间通过网络发送对象?Arvo和Kryo​​如何区别以及当您一起使用时会发生什么?

kos*_*tya 5

当您在查询数据时只需要阅读几列时,Parquet非常有效.但是,如果您的架构有很多列(30+),并且在您的查询/作业中您需要阅读所有这些列,那么基于记录的格式(如AVRO)将更好/更快地工作.

Parquet的另一个限制是它本质上是一次写入格式.因此,通常您需要在某个临时区域收集数据,并将其每天写入一个镶木地板文件(例如).

这是您可能想要使用AVRO的地方.例如,您可以在Kafka主题或本地文件中收集AVRO编码的记录,并具有批处理作业,该作业在一天结束时将所有这些记录转换为Parquet文件.这可以很容易实现,因为timber-avro库提供了自动转换AVRO和Parquet格式的工具.

当然,您可以在Spark/BigData之外使用AVRO.这是一个相当好的序列化格式,类似于Google Protobuf或Apache Thrift.


Dea*_*ler 3

这篇非常好的博客文章解释了除 Kryo 之外的所有内容的详细信息。

http://grepalex.com/2014/05/13/parquet-file-format-and-object-model/

Kryo 将用于快速序列化,不涉及永久存储,例如内存中或磁盘上的随机数据和缓存数据作为临时文件。

  • 那么,如果 Parquet 用于高效的永久存储,而 Kryo 用于快速非永久存储,那么 Arvo 会做什么呢?我什么时候会使用它? (5认同)