【问题标题】:Spark with Avro, Kryo and ParquetSpark 与 Avro、Kryo 和 Parquet
【发布时间】:2015-08-30 01:13:29
【问题描述】:

我很难理解 Avro、Kryo 和 Parquet 在 Spark 环境中的作用。它们都与序列化有关,但我见过它们一起使用,所以它们不能做同样的事情。

Parquet 将其自身描述为一种列式存储格式,我有点明白这一点,但是当我保存 Parquet 文件时,Arvo 或 Kryo 是否与它有任何关系?或者它们仅在火花工作期间相关,即。用于在洗牌期间通过网络发送对象或溢出到磁盘? Arvo 和 Kryo 有何不同?将它们一起使用会发生什么?

【问题讨论】:

    标签: apache-spark kryo parquet


    【解决方案1】:

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

    Parquet 的另一个限制是它本质上是一次写入格式。所以通常你需要在某个暂存区收集数据,并每天将其写入 parquet 文件一次(例如)。

    这是您可能想要使用 AVRO 的地方。例如。您可以在 Kafka 主题或本地文件中收集 AVRO 编码的记录,并有一个批处理作业,在一天结束时将它们全部转换为 Parquet 文件。由于 parquet-avro 库提供了自动在 AVRO 和 Parquet 格式之间转换的工具,这很容易实现。

    当然,您可以在 Spark/BigData 之外使用 AVRO。它是相当不错的序列化格式,类似于 Google Protobuf 或 Apache Thrift。

    【讨论】:

      【解决方案2】:

      这篇非常好的博文解释了除 Kryo 之外的所有内容。

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

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

      【讨论】:

      • 如果 Parquet 用于高效的永久存储,而 Kryo 用于快速的非永久存储,那么 Arvo 会做什么?我什么时候使用它?
      • Kryo - 非常快,非常紧凑,但它仅适用于 JVM,它将我们的基础架构限制为仅 JVM 应用程序。也许一些疯狂的 NodeJS 开发者也想阅读我们的活动??
      猜你喜欢
      • 2019-09-25
      • 2016-11-22
      • 2015-05-11
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2022-10-14
      相关资源
      最近更新 更多