Hadoop ORC文件 - 工作原理 - 如何获取元数据

Kis*_*oor 5 hadoop file-format hive orc

我是ORC文件的新手.我经历了很多博客,但没有得到明确的理解.请帮助并澄清以下问题.

  1. 我可以从ORC文件中获取架构吗?我知道在Avro中,架构可以获取.

  2. 它如何实际提供架构演变?我知道可以添加几列.但是怎么做.我唯一知道的,创建orc文件是通过将数据加载到以orc格式存储数据的hive表中.

  3. ORC文件索引如何工作?我所知道的是每个条带索引都会被维护.但是由于文件没有排序,它如何帮助查找条带列表中的数据.在查找数据时如何帮助跳过条纹?

  4. 是否为每列维护索引.如果是,那么它是否会消耗更多内存?

  5. 柱状格式ORC文件如何适合hive表,其中每列的值存储在一起.而hive表是按记录获取记录的.两者如何结合在一起?

Pha*_*mas 0

嘿,我无法帮助您解决所有问题,但我会尝试一下

  1. 您可以使用 filedump 实用程序读出 ORC 文件的元数据,请参阅此处

  2. 我对模式演化非常不确定,但据我所知 ORC 不支持演化。

  3. ORC 索引存储最小值和最大值之和,因此如果您的数据完全非结构化,您可能仍然需要读取大量数据。但自从 ORC 的最新版本以来,您可以启用额外的布隆过滤器,它在行组消除方面更加准确。也许这也有帮助orc-user 邮件列表

  4. ORC 为每一列提供了一个索引,但这只是一个轻量级索引。您可以将有关最小/最大和总和的信息存储在文件页脚、条带页脚中的数字列上,并且默认情况下每 10000 行存储一次。所以它不需要那么多空间

  5. 如果您将表存储在 Orc Fileformat 中,Hive 将使用特定的 ORC Recordreader 从列中提取行。列式存储的优点是不必读取整行