我是ORC文件的新手。我浏览了许多博客,但并没有清楚的了解。请帮助并澄清以下问题。

  • 我可以从ORC文件中获取架构吗?我知道在Avro中可以获取架构。
  • 它实际上如何提供架构演变?我知道可以添加很少的列。但是怎么做。我唯一知道的是,创建Orc文件是通过将数据加载到以Orc格式存储数据的配置单元表中。
  • ORC文件索引如何工作?我所知道的是,每个 strip 索引都会得到维护。但是由于文件未排序,因此如何帮助您在 strip 列表中查找数据。在查找数据时如何帮助跳过条纹?
  • 是否为每个列维护索引。如果是,那么它不会消耗更多的内存吗?
  • 列格式的ORC文件如何适合 hive 表,其中每列的值存储在一起。而配置单元表是按记录来获取记录的。两者将如何融合在一起?
  • 最佳答案

    1. 2. 使用Hive和/或HCatalog在Hive元存储中创建,读取,更新ORC表结构(HCatalog只是一个旁门,它使Pig/Sqoop/Spark/可以直接访问元存储)

    2. ALTER TABLE命令允许添加/删除列,无论存储类型如何,包括ORC。但请注意,此后可能会损坏矢量化读取的讨厌的错误(至少在V0.13和V0.14中)

    3. 4. 术语“索引”相当不合适。基本上,只是最小/最大信息在写入时保留在 strip 页脚中,然后在读取时用于跳过显然不满足WHERE要求的所有 strip ,从而在某些情况下大大减少了I/O(这种技巧在列存储,例如在MySQL上存储InfoBright,还存储在Oracle Exadata设备中[Oracle行销称其为“智能扫描”)

    5. Hive可以使用“行存储”格式(文本,SequenceFile,AVRO)和“列存储”格式(ORC,Parquet)。优化程序只在初始Map阶段使用特定的策略和捷径-例如 strip 消除,向量化运算符-当然,列存储的序列化/反序列化阶段要复杂一些。

    关于Hadoop ORC文件-如何工作-如何获取元数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30094604/

    10-14 16:20