大数据系统里面,parquet是常见的一种列存储压缩格式。因为是压缩格式,我们无法直接查看parquet文件里的数据,这个时候parquet-tools就给我们提供了一个方便的途径对parquet文件进行查看。
先将parquet-tools下载到本地,比如我下载的是parquet-tools-1.11.0.jar
为了方便实用,我们设置一个parquetview的别名。
alias parquetview='hadoop --cluster hadoopcluster jar /your/parquet-tools/path/parquet-tools-1.11.0.jar
对于parquet文件,第一下我们可能需要了解的就是元信息,这个时候通过schema/meta参数就可以实现查看元信息。
parquetview schema /hdfs/path/paqeutfile
最后的结果如下
message spark_schema {
optional int64 id;
optional fixed_len_byte_array(12) c1 (DECIMAL(27,6));
optional fixed_len_byte_array(12) c2 (DECIMAL(27,6));
optional fixed_len_byte_array(12) c3 (DECIMAL(27,6));
optional fixed_len_byte_array(12) c4 (DECIMAL(27,6));
optional fixed_len_byte_array(12) c5 (DECIMAL(27,6));
optional fixed_len_byte_array(12) c6 (DECIMAL(27,6));
}
如果换meta参数
parquetview meta /hdfs/path/paqeutfile
结果如下
file schema: spark_schema
--------------------------------------------------------------------------------
id: OPTIONAL INT64 R:0 D:1
c1: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
c2: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
c3: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
c4: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
c5: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
c6: OPTIONAL FIXED_LEN_BYTE_ARRAY L:DECIMAL(27,6) R:0 D:1
row group 1: RC:7237530 TS:73588395 OFFSET:4
--------------------------------------------------------------------------------
id: INT64 SNAPPY DO:0 FPO:4 SZ:44362540/57903375/1.31 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[min: 200, max: 1000093565052, num_nulls: 0]
c1: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:44362544 SZ:573140/2614170/4.56 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
c2: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:44935684 SZ:783615/2614170/3.34 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
c3: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:45719299 SZ:589500/2614170/4.43 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
c4: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:46308799 SZ:824869/2614170/3.17 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
c5: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:47133668 SZ:709686/2614170/3.68 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
c6: FIXED_LEN_BYTE_ARRAY SNAPPY DO:0 FPO:47843354 SZ:1194658/2614170/2.19 VC:7237530 ENC:BIT_PACKED,PLAIN,RLE ST:[num_nulls: 7065571, min/max not defined]
从上面的输出可以看出来,meta参数输出的信息,比schema参数输出信息更详尽,可以看到数据的压缩方式,是否压缩,数据的null值数量,min/max值等。
cat命令
parquetview cat /hdfs/path/paqeutfile | head
cat命令可以查看数据里面的内容,用法与linux系统中的cat用法类似。
同样可以查看数据的命令还包括head,head命令默认展示前面5行数据。
parquetview head /hdfs/path/paqeutfile | head
head -n,用法跟linux中一样,可以查看数据前n行。
parquetview head -n 10 /hdfs/path/paqeutfile
id = 2532110138
id = 1126637102
id = 2248319801
id = 1114590219
id = 2264730658
id = 1453715009
id = 2684369799
id = 1159669102
id = 10180075
id = 2541230410
rowcount命令可以查看文件的行数
parquetview rowcount /hdfs/path/paqeutfile
Total RowCount: 7237530
size命令可以查看文件的大小
parquetview size /hdfs/path/paqeutfile
Total Size: 49038008 bytes