关于spark-sql的读写文件的方法,数据源分为这几类:
1.jdbc连接mysql的文件的读写
//从mysql中读取数据,需要指定表,驱动类。
val url = "jdbc:mysql://localhost:3306/bbs?characterEncoding=utf-8"
val tname = "t_acc_Ip"
val conn = new Properties()
conn.setProperty("user","root")
conn.setProperty("password","123456")
conn.setProperty("Driver","com.mysql.jdbc.Driver")
val jdbc: DataFrame = session.read.jdbc(url,tname,conn)
//将数据处理后写出到mysql
jdbc.select("*").write.mode(SaveMode.Overwrite).jdbc(url,"emp",conn)
2.parquet文件格式的读写
//读取parquet文件
val file: DataFrame = session.read.parquet("test.parquet")
val data: Dataset[Row] = file.limit(10)
data.printSchema()
data.show()
//写出parquet文件
data.write.mode(SaveMode.Overwrite).parquet("aa")
3.json文件的读写
//读取json的文件,{"name":"zs","age":"20","fv":"80"}
val json = session.read.json("test.json")
json.write.mode(SaveMode.Overwrite).json("jsonout")
//也就是说是可以将一个元组的数据写出成为一个json的格式了。
val json2: Dataset[String] = session.createDataset(List("a b c"))
val map: Dataset[(String, String, String)] = json2.map({
ls =>
val fields = ls.split(" ")
(fields(0), fields(1), fields(2))
})
map.write.mode(SaveMode.Overwrite).json("a")
4.csv文件的读写
//读取CSV格式数据(分隔符是--,)
val data: DataFrame = session.read.csv("a")
//写出数据
data.write.mode(SaveMode.Overwrite).csv("b")
5.普通文件的读写
//读取普通文件
private val file = session.read.textFile("a.txt")
//save方法写成parquet文件格式
file.write.save("a")
file.write.text("b")
//写到HDFS文件系统
file.rdd.saveAsTextFile("")
text方式保存文件只能有一列,相当于字符串
savemode分为四类。Append, Overwrite, ErrorIfExists, Ignore;