Parquet介绍及简单使用(转)
==> 什么是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
无论数据处理框架,数据模型或编程语言的选择如何,Apache Parquet都是Hadoop生态系统中任何项目可用的列式存储格式
==> 由来
Parquet的灵感来自于2010年Google发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能,在Dremel论文中还介绍了Google如何使用这种存储格式实现并行查询的,如果对此感兴趣可以参考论文和开源实现Apache Drill。
==> 特点:
---> 可以跳过不符合条件的数据,只读取需要的数据,降低 IO 数据量
---> 压缩编码可以降低磁盘存储空间(由于同一列的数据类型是一样的,可以使用更高效的压缩编码(如 Run Length Encoding t Delta Encoding)进一步节约存储空间)
---> 只读取需要的列,支持向量运算,能够获取更好的扫描性能
---> Parquet 格式是 Spark SQL 的默认数据源,可通过 spark.sql.sources.default 配置
==> parquet 常用操作
---> load 和 save 函数
---> Parquet文件
Parquet 是一个列格式而且用于多个数据处理系统中
Spark SQL 提供支持对于 Parquet 文件的读写,也就是自动保存原始 数据的 Schema, 当写 Parquet 文件时,所有的列被自动转化为 nullable,因为兼容性的缘故
---- 读取 Json 格式的数据,将其转换成 parquet 格式,创建相应的表,使用 SQL 语句查询
---- Schematic 的合并: 先定义一个简单的 Schema,然后逐渐增加列描述,用户可以获取多个有多个不同 Schema 但相互兼容的 Parquet 文件
---> Json Datasets(两种写法)
---> JDBC 方式读取关系型数据库中的数据(需要将 JDBC 的驱动加入)
---> 操作 Hive 的表
---- 把 hive 和 hadoop 的配置文件拷贝到sprke 的 conf 目录下: hive-sit.xml, core-sit.xml, hdfs-sit.xml
---- 启动 Spark-shell 时 指定mysql 数据库的驱动程序
---- 使用 Spark Shell 操作 Hive
---- 使用 Spark SQL 操作 Hive