读写Parquet数据

Apache Parquet 是一种流行的列式存储格式。Spark原生支持Parquet文件格式的读写

写Parquet

基于上一节的file.json文件,将其转换成parquet文件:

val jsDF = spark.read.json("/home/ec2-user/file.json")

jsDF.write.parquet("/home/ec2-user/parquet_file")

image-20240304091939704

Spark将结果写入了文件夹:

[ec2-user@ip-172-31-45-168 ~]$ ls
file.avro  multi-line.json  spark-3.5.0-bin-hadoop3
file.json  parquet_file     spark-3.5.0-bin-hadoop3.tgz
[ec2-user@ip-172-31-45-168 ~]$ cd parquet_file/
[ec2-user@ip-172-31-45-168 parquet_file]$ ls -la
total 44
drwxr-xr-x. 2 ec2-user ec2-user 16384 Mar  4 01:19 .
drwx------. 7 ec2-user ec2-user 16384 Mar  4 01:19 ..
-rw-r--r--. 1 ec2-user ec2-user     8 Mar  4 01:19 ._SUCCESS.crc
-rw-r--r--. 1 ec2-user ec2-user    32 Mar  4 01:19 .part-00000-b10bc4a7-5355-4b88-9d59-7beeec07b193-c000.snappy.parquet.crc
-rw-r--r--. 1 ec2-user ec2-user     0 Mar  4 01:19 _SUCCESS
-rw-r--r--. 1 ec2-user ec2-user  2736 Mar  4 01:19 part-00000-b10bc4a7-5355-4b88-9d59-7beeec07b193-c000.snappy.parquet

读parquet

val parquetDF = spark.read.parquet("/home/ec2-user/parquet_file")

parquetDF.show
parquetDF.printSchema

image-20240304092043235