Spark SQL - Parquet文件

2018-12-20 17:17 更新

Parquet是一种柱状格式,由许多数据处理系统支持。 具有柱状存储的优点如下 :

1、列存储限制IO操作。

2、列式存储可以获取您需要访问的特定列。

3、列式存储占用更少的空间。

4、列式存储提供更好的摘要数据,并遵循类型特定的编码。

Spark SQL提供对读取和写入自动捕获原始数据模式的镶木地板文件的支持。 像JSON数据集一样,parquet文件遵循相同的过程。

让我们再看一下名为employee.parquet的员工记录数据放在spark-shell正在运行的同一目录中的相同示例。

给定数据 - 不要将员工记录的输入数据转换为镶木地板格式。 我们使用以下命令将RDD数据转换为Parquet文件。 放置employee.json文档,我们在之前的示例中用作输入文件。

$ spark-shell
Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“emplaoyee”)
Scala> employee.write.parquet(“employee.parquet”)
无法显示拼贴文件。 它是一个目录结构,您可以在当前目录中找到它。 如果要查看目录和文件结构,请使用以下命令。
$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS
以下命令用于读取,注册到表以及对其应用一些查询。 

打开Spark Shell 

使用以下示例启动Spark shell

$ spark-shell

创建SQLContext对象 

使用以下命令生成SQLContext。这里,sc表示SparkContext对象。

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
从文本文件读取输入 

通过使用以下语句从名为employee.parquet的parquet文件读取数据来创建RDD DataFrame。

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)
将DataFrame存储到表中 

使用以下命令将DataFrame数据存储到名为employee的表中。在这个命令之后,我们可以应用所有类型的SQL语句。

scala> Parqfile.registerTempTable(“employee”)
员工表已准备就绪。 现在让我们使用SQLContext.sql()方法在表上传递一些SQL查询。
选择DataFrame上的查询
使用以下命令从employee表中选择所有记录。 这里,我们使用变量allrecords来捕获所有记录数据。 要显示这些记录,请调用show()方法。

scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")

要查看allrecords 数据源的结果数据,请使用以下命令。

scala> allrecords.show()
输出:

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号