spark sql加载parquet格式和json格式数据

来源:互联网 发布:国外网络支付平台 编辑:程序博客网 时间:2024/05/29 16:45

Parquet存储格式
1. 什么是Parquet数据格式?
Parquet是一种列式存储格式,可以被多种查询引擎支持(Hive、Impala、Drill等),并且它是语言和平台无关的。
2. Parquet文件下载后是否可以直接读取和修改呢?
Parquet文件是以二进制方式存储的,是不可以直接读取和修改的。Parquet文件是自解析的,文件中包括该文件的数据和元数据。
3. 列式存储和行式存储相比有哪些优势呢?
可以只读取需要的数据,降低IO数据量;
压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码进一步节约存储空间。
参考链接:
http://blog.csdn.net/yu616568/article/details/51868447 讲解了parquet文件格式和orc文件格式
http://www.infoq.com/cn/articles/in-depth-analysis-of-parquet-column-storage-format 讲解了parquet列式存储
4. 导入parquet文件信息
首先需要有parquet文件,可以在github上下载,链接如下
https://github.com/apache/spark/blob/master/examples/src/main/resources/users.parquet。
parquet文件下载好以后,使用命令pyspark --total-executor-cores 4 打开spark的python环境,然后导入parquet文件。
如果parquet文件存在本地/opt 目录下,导入代码为:

parquetFile = spark.read.parquet("file:///opt/users.parquet")

如果parquet文件存在hdfs上,导入代码如下,其中master是hdfs集群上主机的ip,port指其端口号

parquetFile = spark.read.parquet("hdfs://master:port/user/mart_cis/zhousishuo/users.parquet")

5 读取parquet信息
创建视图

parquetFile.createOrReplaceTempView("parquetFile")

使用spark sql语句查询

users = spark.sql("select * from parquetFile")users.show()

结果如下:
这里写图片描述

JSON存储格式
json数据格式一般比较熟悉,如下图:
这里写图片描述
1. 导入json数据
如果json数据存在本地/opt目录下,导入代码如下:

session = spark.read.json("file:///opt/people.json")

如果json数据存在hdfs上,导入代码如下:

session = spark.read.json("hdfs://master:8020/user/mart_cis/zhousishuo/people.json")

2.读取json数据
为上述session这个DataFrame注册一张表

session.registerTempTable("session")

使用spark sql语句查询

sessionDF = spark.sql("select * from session")sessionDF.show()

结果如下:
这里写图片描述
参考链接:
http://spark.apache.org/docs/latest/sql-programming-guide.html#json-datasets 关于spark sql导入数据讲的比较详细

原创粉丝点击