Spark SQL:通用的load和save操作

豐澤發表於2018-09-26

一、通用的load和save操作

對於Spark SQL的DataFrame來說,無論是從什麼資料來源建立出來的DataFrame,都有一些共同的load和save操作。load操作主要用於載入資料,建立出DataFrame;save操作,主要用於將DataFrame中的資料儲存到檔案中。

Java版本
DataFrame df = sqlContext.read().load("users.parquet");
df.select("name", "favorite_color").write().save("namesAndFavColors.parquet");
複製程式碼
Scala版本
val df = sqlContext.read.load("users.parquet")
df.select("name", "favorite_color").write.save("namesAndFavColors.parquet")
複製程式碼

二、手動指定資料來源型別

也可以手動指定用來操作的資料來源型別。資料來源通常需要使用其全限定名來指定,比如parquet是org.apache.spark.sql.parquet。但是Spark SQL內建了一些資料來源型別,比如json,parquet,jdbc等等。實際上,通過這個功能,就可以在不同型別的資料來源之間進行轉換了。比如將json檔案中的資料儲存到parquet檔案中。預設情況下,如果不指定資料來源型別,那麼就是parquet。

Java版本
DataFrame df = sqlContext.read().format("json").load("people.json");
df.select("name", "age").write().format("parquet").save("namesAndAges.parquet");
複製程式碼
Scala版本
val df = sqlContext.read.format("json").load("people.json")
df.select("name", "age").write.format("parquet").save("namesAndAges.parquet")
複製程式碼

三、Save Mode

Spark SQL對於save操作,提供了不同的save mode。主要用來處理,當目標位置,已經有資料時,應該如何處理。而且save操作並不會執行鎖操作,並且不是原子的,因此是有一定風險出現髒資料的。

Spark SQL:通用的load和save操作

相關文章