SparkSQL读写

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章