
spark.read.format("json").load("XXXX")
2、读取文本文件
option("seq", ",") //指定分隔符
spark.read
.format("csv")
.option("sep", ",") //指定分隔符
.schema("id String,name String,age Int,gender String,clazz String")
.load("sparkproject/data/students.txt")
.show()
3、JDBC读取Mysql数据
spark.read
.format("jdbc")
.option("url", "jdbc:mysql://master:3306/shujiaku")
.option("dbtable", "student")
.option("user", "root")
.option("password", "123456")
.load()
.show()
4、读取parquet格式数据
无法直接查看,默认会进行压缩,自带表结构
—读取数据不需要指定schema
—默认使用snappy压缩方式进行压缩
//将数据保存成Parquet格式保存
// jdbcDF.write
// .mode(SaveMode.Overwrite)
// .parquet("sparkproject/data/new_res")
spark.read
.format("parquet")
.load("sparkproject/data/new_res")
.show()
5、读取orc格式的数据
默认进行压缩,空间占有率小,默认带有表结构
//将数据保存成ORC格式保存
// jdbcDF.write
// .mode(SaveMode.Overwrite)
// .orc("sparkproject/data/new_orc")
spark.read
.format("orc")
.load("sparkproject/data/new_orc")
.show()
6、从RDD构建Dataframe
(1)RDD转Dataframe
—toDF:需要导入隐式转换 import spark.implicits._
//读取文件RDD格式
val stuRDD: RDD[String] = spark.sparkContext
.textFile("sparkproject/data/students.txt")
//先将数据切出来
val tupleRDD = stuRDD.map(line => {
val splits: Array[String] = line.split(",")
val id: String = splits(0)
val name: String = splits(1)
val age: String = splits(2)
val gender: String = splits(3)
val clazz: String = splits(4)
Students(id, name, age, gender, clazz)
})
//需要导入隐式转换
import spark.implicits._
//没有列名,加入列名
//val sDF: Dataframe = tupleRDD.toDF("id", "name", "age", "gender", "clazz")
//有了样例类格式就是有了表头
val sDF: Dataframe = tupleRDD.toDF()
sDF.show()
}
//样例类
case class Students(id: String, name: String, age: String, gender: String, clazz: String)
(2)Dataframe转RDD
—rdd:调用rdd方法返回的是Row格式的RDD
—Row也是一种数据格式,可以使用getAs方法取里面的每一列数据
val rdd: RDD[Row] = sDF.rdd
rdd.foreach(row => {
//Row对象通过getAs取每一列数据
val id: String = row.getAs[String]("id")
val name: String = row.getAs[String]("name")
println(s"$id,$name")
})
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)