【问题标题】:I want to use data only for spark then which file format is best for hive?我只想将数据用于 spark 那么哪种文件格式最适合 hive?
【发布时间】:2019-06-15 06:14:41
【问题描述】:
我只想为 spark 访问表,那么我应该以哪种格式将表数据存储在 hive 中? (orc or parquet or avro or csv or text or sequence) ??为什么??
我不会在任何地方使用这个表,我只是用于 spark 而已。
【问题讨论】:
标签:
apache-spark
hadoop
hive
【解决方案1】:
由于这个问题还没有结束,我将尝试回答并提供一些论据。
自从 Spark 2.3 添加了原生 ORC 支持并修复了许多 ORC 问题,例如矢量化读写、谓词下推、模式演变、索引和布隆过滤器使用以及许多其他改进和修复。在 Spark 2.3 更好地使用 Parquet 之前,它的运行速度要快得多并且没有很多问题。此外,根据 Hortonworks 的介绍,一些复杂的类型不能在原生支持的 ORC 中使用,ORC 原生 ACID 支持也在进行中。如果这些限制很重要,请使用 Parquet。
Hive 从一开始就在 MR 和 Tez 上更好地支持 ORC:矢量化、PPD 和 ACID 将在 Hive 中很好地与 ORC 配合使用。你说它只会在 Spark 中使用,但谁知道谁也会查询你的表以及你为什么在问题中提到 Hive。分析/BI 软件可能使用 Hive,而不是 Spark。
您还提到的序列格式、文本文件和 avro 甚至无法与 ORC 和 Parquet 相比,因为缺少 PPD、矢量化和 ACID 等许多功能。 Sequence 是一个可拆分的容器,Parquet 或 ORC 不需要,它们也是可拆分的。
查看此 Hortonworks 演示文稿:orc-improvement-in-apache-spark-2-3 - 它包含改进细节、与 Parquet 的比较、基准测试和一些限制细节。