查看parquet文件格式内容
1.下载jar包或者下载git
下载对应的parquet-tools jar:http://logservice-resource.oss-cn-shanghai.aliyuncs.com/tools/parquet-tools-1.6.0rc3-SNAPSHOT.jar?spm=5176.doc52798.2.7.H3s2kL&file=parquet-tools-1.6.0rc3-SNAPSHOT.jar
git:https://github.com/apache/parquet-mr/tree/master/parquet-tools?spm=5176.doc52798.2.6.H3s2kL
2.查看schema:
java -jar parquet-tools-1.6.0rc3-SNAPSHOT.jar schema -d myparquet.parquet | head -n 10 |
3.查看内容:
java -jar parquet-tools-1.6.0rc3-SNAPSHOT.jar head -n 10 myparquet.parquet
或者直接打开spark-shell
import spark.implicits._
val source = spark.read.parquet("E:/BaiduNetdiskDownload/d1/account_top=8/part-00000-9e89d753-8ae4-443a-8308-961b8fc9dbfa-c000.snappy.parquet")
parquet格式简介
Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。Parquet最初是由Twitter和Cloudera(由于Impala的缘故)合作开发完成并开源,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.1。
数据模型
Parquet支持嵌套的数据模型,类似于Protocol Buffers,每一个数据模型的schema包含多个字段,每一个字段又可以包含多个字段,每一个字段有三个属性:重复数、数据类型和字段名,重复数可以是以下三种:required(出现1次),repeated(出现0次或多次),optional(出现0次或1次)。每一个字段的数据类型可以分成两种:group(复杂类型)和primitive(基本类型)。例如Dremel中提供的Document的schema示例,它的定义如下:
message Document {
required int64 DocId;
optional group Links {
repeated int64 Backward;
repeated int64 Forward;
}
repeated group Name {
repeated group Language {
required string Code;
optional string Country;
}
optional string Url;
}
}
可以把这个Schema转换成树状结构,根节点可以理解为repeated类型,如下图: