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

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