Parquet介绍及简单使用 | 青训营笔记

298 阅读2分钟

这是我参与「第四届青训营-大数据场」笔记创作活动的的第2天 什么是parquet

Parquet 是列式存储的一种文件类型

官网上的描述:Apache Parquet is a columnar storage format available to any project in the Hadoop ecosystem, regardless of the choice of data processing framework, data model or programming language.

Parquet的灵感来自于2010年Google发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能,在Dremel论文中还介绍了Google如何使用这种存储格式实现并行查询的,如果对此感兴趣可以参考论文和开源实现Apache Drill。

它可以跳过不符合条件的数据,只读取需要的数据,降低 IO 数据量 压缩编码可以降低磁盘存储空间(由于同一列的数据类型是一样的,可以使用更高效的压缩编码(如 Run Length Encoding t  Delta Encoding)进一步节约存储空间) 只读取需要的列,支持向量运算,能够获取更好的扫描性能 Parquet 格式是 Spark SQL 的默认数据源,可通过 spark.sql.sources.default 配置

常用操作

  1. load 和save函数
  2. Parquet文件
  3. Parquet 是一个列格式而且用于多个数据处理系统中。Spark SQL 提供支持对于 Parquet 文件的读写,也就是自动保存原始 数据的 Schema, 当写 Parquet 文件时,所有的列被自动转化为 nullable,因为兼容性的缘故
  4. 读取 Json 格式的数据,将其转换成 parquet 格式,创建相应的表,使用 SQL 语句查询
  5. Schematic 的合并: 先定义一个简单的 Schema,然后逐渐增加列描述,用户可以获取多个有多个不同 Schema 但相互兼容的 Parquet 文件
  6. 操作 Hive 的表:把 hive 和 hadoop 的配置文件拷贝到sprke 的 conf 目录下: hive-sit.xml, core-sit.xml, hdfs-sit.xml\,然后启动 Spark-shell 时 指定mysql数据库的驱动程序

总结:无论数据处理框架,数据模型或编程语言的选择如何,Apache Parquet都是Hadoop生态系统中任何项目可用的列式存储格式。