【问题标题】:How does ORC delimit fields?ORC如何分隔字段?
【发布时间】:2026-02-10 01:05:01
【问题描述】:

我知道这一定是个愚蠢的问题,但经过数小时的谷歌搜索后,我无法得到答案。

在纯文本格式(例如 csv)中很容易理解分隔符的工作原理。在 ORC 中,由于 is 是二进制存储在 HDFS 中,那么字段的分隔符是什么?有人告诉我ORC中没有分隔符,但我对这个说法非常怀疑。

即使是作为行组存储,对于每个行组的一列,也可以有多个数据字段,如何区分每个字段与下一个字段?每行如何与下一行分开?是否有分隔符来实现这一点?

感谢您的任何cmets!

【问题讨论】:

  • 50 年前,没有人使用字段分隔符,也没有使用行分隔符。因为大型机文件使用具有固定宽度字段的固定宽度记录。也因为打孔卡基本上是固定宽度的设备(没有键盘,没有屏幕,没有鼠标,呃)。
  • 然后创建了 VARCHAR(可变长度字符串)。但仍然没有分隔符:字段以固定宽度的整数开头,表示后面数据的长度。 IE。您必须跳过多少字节才能找到下一个字段。另请参阅旧 Excel 文件使用的 BIFF 文件格式的概念gaia-gis.it/gaia-sins/freexl-1.0.1-doxy-doc/html/Format.html

标签: hadoop hive hdfs storage orc


【解决方案1】:

没有分隔符。它使用步幅/条纹,

文件的主体被分成条纹。每条条纹都是自我 包含并且可以仅使用它自己的字节与 文件的页脚和后记。每个条带仅包含整行,因此 行永远不会跨越条纹边界。条纹有三个 部分:条带内行的一组索引,数据 本身和一个条纹页脚。索引和数据部分 按列划分,以便只有所需列的数据 需要阅读。

参考:ORC

【讨论】:

    最近更新 更多