SparkSQL之External Data读写parquet

准备数据文件

/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(),这种方式与上面的方式效果是相同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值