我是ORC文件的新手。我浏览了许多博客,但并没有清楚的了解。请帮助并澄清以下问题。
最佳答案
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/