DeltaLake支持大部分由Spark DataFrame提供的Opition選項(xiàng)
SparkSession的配置
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("demo")
.master("demo")
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
.getOrCreate()
創(chuàng)建表
DeltaLake支持通過(guò)路徑或者元數(shù)據(jù)查詢表,如下:
spark.table("events") // 通過(guò)元數(shù)據(jù)查詢
spark.read.format("delta").load("/delta/events") // 通過(guò)路徑查詢
import io.delta.implicits._
spark.read.delta("/delta/events")
DeltaLake讀取分區(qū)表,如下:
df.write.format("delta").partitionBy("date").saveAsTable("events") // create table in the metastore
df.write.format("delta").partitionBy("date").save("/delta/events") // create table by path
DeltaLake也支持讀取比較舊的數(shù)據(jù)快照宰翅,如下:
spark.read.format("delta").option("versionAsOf","0") // _delta_log下的0若债,1谬墙,2是版本號(hào)
spark.read.format("delta").load("/path/to/my/table@v1") # @v1就是第一個(gè)版本
DeltaLake目錄下為:
image.png