赞
踩
test.tmp_hgs_orc_xxx
,介绍如何查看ORC文件的元数据,以帮助大家更好地理解ORC文件的存储结构Hive表中的数据以ORC格式存储,将以.orc
为扩展名存入HDFS中
查看ORC文件的元数据,也就是对.orc
文件进行分析
不管通过哪种方式查看ORC文件的元数据,首先得知道ORC文件的HDFS路径
首先,通过show create table xxxx
语句,知道Hive表的存储路径
show create table test.tmp_hgs_orc_xxx;
表结构,如图所示:
接着,通过hdfs dfs -ls
命令查看该表对应的ORC文件
该表只存储了一个ORC文件,part-00000-eccb0061-f704-4eff-82f5-815bb8cacfb0-c000.snappy.orc
,基于该文件进行分析
查看ORC文件的元数据的hive命令如下:
hive --orcfiledump <path_to_file>
具体使用时,加上ORC文件的HDFS路径即可
hive --orcfiledump /hive/warehouse/test.db/tmp_hgs_orc_xxx/part-00000-eccb0061-f704-4eff-82f5-815bb8cacfb0-c000.snappy.orc
查看结果部分截图如下:
注意: 从Hive 1.1开始,支持打印ORC文件中的数据,命令如下:
hive --orcfiledump -d <path_to_file>
Java Tools有很多版本,本文选择使用1.6.12这个stable release的版本,下载orc-tools-1.6.12-uber.jar
linux系统,可以通过wget命令进行下载
wget https://repo1.maven.org/maven2/org/apache/orc/orc-tools/1.6.12/orc-tools-1.6.12-uber.jar
Java Tools分析ORC文件时,不能直接基于存储在HDFS中的文件进行分析,需要先下载到本地
下载命令如下:
hdfs dfs -get <hdfs-path> <local-file-name>
hdfs dfs -get /hive/warehouse/test.db/tmp_hgs_orc_xxx/part-00000-eccb0061-f704-4eff-82f5-815bb8cacfb0-c000.snappy.orc xxx-eccb0061.snappy.orc
下载完成后,本地将出现xxx-eccb0061.snappy.orc文件
使用Java Tools查看ORC文件元数据的命令如下:
java -jar orc-tools-X.Y.Z-uber.jar meta <path-to-local-orc-file>
使用示例:
java -jar orc-tools-1.6.12-uber.jar meta xxx-eccb0061.snappy.orc
File Version: 0.12 with ORC_14 by ORC Java 1.6.11
File Version: 0.12
,对应PostScript.version,表示可以读取该ORC的最低Hive版本
ORC_14
:对应PostScript.writerVersion,表示写该ORC文件的writer版本
ORC Java
:对应Footer.writer,表示通过哪种writer实现写的ORC文件,如ORC Java、ORC C++、Presto等
1.6.11
: 对应Footer.softwareVersion,记录Footer.writer的软件版本。
ORC Java 1.6.11
表示,使用1.6.11版本的Java orc writer,对应maven依赖应该是
<dependency>
<groupId>org.apache.orc</groupId>
<artifactId>orc-core</artifactId>
<version>1.6.11</version>
</dependency>
Calendar: Julian/Gregorian
hasNull
为true,count
为0(表示所有值都为null) ;数值列没有min、max,sum为默认值0Stripes部分记录了stripe的详细信息,其中start都是相对整个文件头部而言
首先是stripe的offset、各部分的长度、数据行数、index streams
注意: 下图中,第2点描述有问题:
第一个stripe的offset为3,修正为:ORC文件的header固定为ORC
,占据3 bytes(并非stripe header固定3 bytes)
接着,是stripe的data streams
省略部分data streams,剩余的data streams如下:
最后,是stripe中列的编码信息(encodings)
参考链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。