准备数据文件
在/home/iie4bu/app/spark-2.4.5-bin-2.6.0-cdh5.15.1/examples/src/main/resources
路径下有一个users.parquet
文件。
查看parquet文件内容
package cn.ac.iie.spark
import org.apache.spark.sql.SparkSession
/**
* Parquet文件操作
*/
object ParquetApp {
def main(args: Array[String]): Unit = {
val sparksession = SparkSession.builder().appName("DataFrameCase").master("local[2]").getOrCreate()
val df = sparksession.read.format("parquet").load("file:///E:/test/users.parquet")
df.printSchema()
df.show()
sparksession.close()
}
}
我们先简单打印一下users.parquet
文件内容是什么,输出结果如下:
简单查询然后将结果输出
object ParquetApp {
def main(args: Array[String]): Unit = {
val sparksession = SparkSession.builder().appName("DataFrameCase").master("local[2]").getOrCreate()
val df = sparksession.read.format("parquet").load("file:///E:/test/users.parquet")
df.printSchema()
df.show()
df.select("name", "favorite_numbers").write.format("json").save("file:///E:/test/users-result")
sparksession.close()
}
}
这样就将结果保存到E:/test/users-result
文件夹下了。
spark数据源如果没有指定format,那么默认是parquet文件来处理。
val df2 = sparksession.read.load("file:///E:/test/users.json")
会报错,因为spark会默认是parquet文件格式。
使用Spark-SQL方式读取parquet文件
启动spark-sql:./spark-sql --master local[2] --jars /home/iie4bu/software/mysql-connector-java-5.1.35.jar --driver-class-path /home/iie4bu/software/mysql-connector-java-5.1.35.jar
CREATE TEMPORARY VIEW parquetTable
USING org.apache.spark.sql.parquet
OPTIONS (
path "/home/iie4bu/app/spark-2.4.5-bin-2.6.0-cdh5.15.1/examples/src/main/resources/users.parquet"
)
查看刚创建的表:show tables
查询表内容:select * from parquettable
可以通过option方式导入数据
sparksession.read.format("parquet").option("path", "file:///E:/test/users.parquet").load()
,这种方式与上面的方式效果是相同的。