Spark SQL数据的加载与保存
加载数据
1)read直接加载数据
scala> spark.read.
csv jdbc json orc parquet textFile… …
注意:加载数据的相关参数需写到上述方法中。如:textFile需传入加载数据的路径,jdbc需传入JDBC相关参数。
2)format指定加载数据类型
scala> spark.read.format("…")[.option("…")].load("…")
用法详解:
(1)format("…"):指定加载的数据类型,包括"csv"、“jdbc”、“json”、“orc”、“parquet"和"textFile”。
(2)load("…"):在"csv"、“orc”、“parquet"和"textFile"格式下需要传入加载数据的路径。
(3)option(”…"):在"jdbc"格式下需要传入JDBC相应参数,url、user、password和 dbtable。
保存数据
1)write直接保存数据
scala> df.write.
csv jdbc json orc parquet textFile… …
注意:保存数据的相关参数需写到上述方法中。如:textFile需传入加载数据的路径,jdbc需传入JDBC相关参数。
2)format指定保存数据类型
scala> df.write.format("…")[.option("…")].save("…")
用法详解:
(1)format("…"):指定保存的数据类型,包括"csv"、“jdbc”、“json”、“orc”、“parquet"和"textFile”。
(2)save ("…"):在"csv"、“orc”、“parquet"和"textFile"格式下需要传入保存数据的路径。
(3)option(”…"):在"jdbc"格式下需要传入JDBC相应参数,url、user、password和dbtable
3)文件保存选项
可以采用SaveMode执行存储操作,SaveMode定义了对数据的处理模式。SaveMode是一个枚举类,其中的常量包括:
(1)Append:当保存路径或者表已存在时,追加内容;
(2)Overwrite: 当保存路径或者表已存在时,覆写内容;
(3)ErrorIfExists:当保存路径或者表已存在时,报错;
(4)Ignore:当保存路径或者表已存在时,忽略当前的保存操作。
使用详解:
df.write.mode(SaveMode.Append).save("… …")
默认数据源
Spark SQL的默认数据源为Parquet格式。数据源为Parquet文件时,Spark SQL可以方便的执行所有的操作。修改配置项spark.sql.sources.default,可修改默认数据源格式。
1)加载数据
val df = spark.read.load(“examples/src/main/resources/users.parquet”)
2)保存数据
df.select(“name”, " color").write.save(“user.parquet”)
默认数据源
Spark SQL的默认数据源为Parquet格式。数据源为Parquet文件时,Spark SQL可以方便的执行所有的操作。修改配置项spark.sql.sources.default,可修改默认数据源格式。
1)加载数据
val df = spark.read.load(“examples/src/main/resources/users.parquet”)
2)保存数据
df.select(“name”, " color").write.save(“user.parquet”)
MySQL
Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。
可在启动shell时指定相关的数据库驱动路径,或者将相关的数据库驱动放到spark的类路径下。
1)启动spark-shell
bin/spark-shell --master spark://hadoop102:7077 [--jars mysql-connector-java-5.1.27-bin.jar]
2)定义JDBC相关参数配置信息
scala > val connectionProperties = new Properties()
scala > connectionProperties.put("user", "root")
scala > connectionProperties.put("password", "000000")
3)使用read.jdbc加载数据
val jdbcDF2 = spark.read.jdbc("jdbc:mysql://hadoop102:3306/rdd", "rddtable", connectionProperties)
4)使用format形式加载数据
val jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://hadoop102:3306/rdd").option("dbtable", " rddtable").option("user", "root").option("password", "000000").load()
5)使用write.jdbc保存数据
scala > jdbcDF2.write.jdbc("jdbc:mysql://hadoop102:3306/mysql", "db", connectionProperties)
6)使用format形式保存数据
scala > jdbcDF.write.format("jdbc").option("url", "jdbc:mysql://hadoop102:3306/rdd").option("dbtable", "rddtable3")
.option("user", "root").option("password", "000000").save()
HIve 与 spark sql 交互参考下面链接 :
http://blog.sina.com.cn/s/blog_c30a9e680102z6ip.html