11.3 读取 Parquet
文件
Parquet 是一种流行的列式存储格式,可以高效地存储具有嵌套字段的记录。Parquet 格式经常在 Hadoop 生态圈中被使用,它也支持 Spark SQL 的全部数据类型。Spark SQL 提供了直接读取和存储 Parquet 格式文件的方法。
package day05
import org.apache.spark.sql.{DataFrame, Dataset, SaveMode, SparkSession}
object DataSourceDemo {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession
.builder()
.master("local[*]")
.appName("Test")
.getOrCreate()
import spark.implicits._
val jsonDF: DataFrame = spark.read.json("target/classes/user.json")
jsonDF.write.mode(SaveMode.Overwrite).parquet("target/classes/user.parquet")
val parDF: DataFrame = spark.read.parquet("target/classes/user.parquet")
val userDS: Dataset[User] = parDF.as[User]
userDS.map(user => {user.name = "zl"; user.friends(0) = "志玲";user}).show()
}
}
case class User(var name:String, age: Long, friends: Array[String])
注意:
Parquet
格式的文件是 Spark 默认格式的数据源.所以, 当使用通用的方式时可以直接保存和读取.而不需要使用format
spark.sql.sources.default
这个配置可以修改默认数据源