DataFrame 读取与保存

Spark SQL支持多种结构化数据源,能够轻松从各种数据源中读取Row对象。这些数据源包括Hive表,JSON,Parquet,CSV等文件。


  • 从文件系统加载与保存

// hdfs上读取
val customerDF = spark.read.format("csv").mode("overwrite").option("header", true).load("hdfs:/temp/data/customer.csv")
// 保存在hdfs
customerDF.write.format("csv").save("hdfs:///temp/data/customerDF")

// 本地文件系统上读取
val customerDF = spark.read.format("csv").mode("overwrite").option("header", true).load("file:///root/data/customer.csv")
// 保存在本地
customerDF.write.format("csv").save("file:///root/data/customerDF")

注:save mode有四种如下:

mode说明
errorifexists(default)当数据源已经存在数据,抛出一个异常
apped当数据源已经存在数据,将新的数据附加到原有数据上
overwrite当数据源已经存在数据,新数据覆盖掉原有数据
Ignore当数据源已经存在数据,忽略新数据
  • 从Hive中读取与保存

// 第一种读取方式
val orderDF = spark.table("sparkdf.orders")

// 第二种读取方式
val spark = SparkSession.builder.enableHiveSupport.getOrCreate
val orderDF = spark.sql("select * from sparkdf.orders")

// 保存DF为Hive表
orderDF.write.mode("overwrite").saveAsTable("saprkdf.orders")
  • RDB中读取与保存

// 引入jar包
spark-shell --jars mysql-connector-java.jar

// 读数据
val usersDF= spark.read.format("jdbc")
.option("url", "jdbc:mysql://localhost:3306/retail_db")
.option("driver", "com.mysql.jdbc.Driver")
.option("user", "root")
.option("password", "123456")
.option("dbtable", "users")
.load()


// 保存到mysql,首先导入Propertoes类
import java.util.Properties

val perproties = new Perproties()
perproties.put("driver", "com.mysql.jdbc.Driver")
perproties.put("user", "root")
perproties.put("password", "123456")

// 保存为mysql表
usersDF.write.mode("overwrite").jdbc("jdbc:mysql://localhost:3306/retail_db", "users", properties)

// 另一种保存方式
userDF.write.mode("overwrite").format("jdbc")
.option("url", "jdbc:mysql://localhost:3306")
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", "retail_db.users")
.option("user", "root")
.option("password", "123456")
.save()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值