1.1、加载数据:
spark.read.load 是加载数据的通用方法。如果读取不同格式的数据,可以对不同的数据格式进行设定。
spark.read.format("…")[.option("…")].load("…")
① format("…"):指定加载的数据范例,包罗"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"。
② load("…"):在"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"格式下需要传入加载数据的路径。
③ option("…"):在"jdbc"格式下需要传入 JDBC 相应参数,url、user、password 和 dbtable
我们前面都是利用 read API 先把文件加载到 DataFrame 然后再查询,其实,我们也可以直接在文件上进行查询: 文件格式.`文件路径`
spark.sql("select * from json.’ Spark-SQL/input/user.json’").show
1.2、保存数据:
df.write.save 是保存数据的通用方法。如果保存不同格式的数据,可以对不同的数据格式进行设定。
df.write.format("…")[.option("…")].save("…")
① format("…"):指定保存的数据范例,包罗"csv"、"jdbc"、"json"、"orc"、"parquet"和"textFile"。
② save ("…"):在"csv"、"orc"、"parquet"和"textFile"格式下需要传入保存数据的路径。
③ option("…"):在"jdbc"格式下需要传入 JDBC 相应参数,url、user、password 和 dbtable
加载json文件
val path = "/opt/module/spark-local/people.json"
val peopleDF = spark.read.json(path)
创建临时表
peopleDF.createOrReplaceTempView("people")
数据查询
val resDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19")
//通过JDBC
val pros roperties = new Properties()
pros.setProperty("user","root")
pros.setProperty("password","123456")
val df ataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306/system","user",pros)
df.show()
3) 写入数据
val sparkConf = new SparkConf().setMaster("local
").setAppName("SQL")
val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._
val rdd: RDD[Stu] = spark.sparkContext.makeRDD(List(Stu("lisi", 20),
Stu("zs", 30)))
val dsataset[Stu] = rdd.toDS()