列式存储布局(比如 Parquet)可以加速查询,因为它只检查所有需要的列并对它们的值执行计算,因此只读取一个数据文件或表的小部分数据。Parquet 还支持灵活的压缩选项,因此可以显著减少磁盘上的存储。
可以直接read一个parquet文件,就转成了dataframe。因为parquet文件里有比较丰富的信息,不像普通的文件。所以推荐是把其他文件的格式,清洗后转换成parquet数据格式。
//读取实例中的json文件
val jsonPeopleDF = spark.read.json("/usr/local/Cellar/spark-2.3.0/examples/src/main/resources/people.json")
//将json格式转化为parquet文件
jsonPeopleDF.write.parquet("/Users/walle/Documents/D3/d1.parquet")
//将转换好的parquet文件转化为dataframe
val d1DF = spark.read.parquet("file:///Users/walle/Documents/D3/d1.parquet")
d1DF.show