遷移向導
工作負載遷移到三角洲湖
工作負載遷移到三角洲湖的時候,你應該意識到以下的簡化和差異與Apache火花和Apache提供的數據源蜂巢。
三角洲湖自動處理以下操作,你永遠不應該手動執行:
刷新表
:三角洲表總是返回最新的信息,所以沒有需要手動調用刷新表
後的變化。
添加和刪除分區:三角洲湖自動跟蹤的分區表並更新列表中添加或刪除數據。因此,沒有必要
改變表(添加|刪除)分區
或MSCK
。加載單個分區:作為一個優化,你有時可能會直接加載您感興趣的數據分區。例如,
spark.read.format .load(“鋪”)(“/數據/日期= 2017-01-01”)
。與三角洲湖這是不必要的,因為它可以快速閱讀的列表文件從事務日誌找到相關的。如果你有興趣在一個分區,使用一個指定它在哪裏
條款。例如,spark.read.delta(“/數據”)。(“日期=“2017-01-01”)
。大表有很多文件的分區,這可以加載速度遠遠超過單個分區(分區直接路徑,或在哪裏
)從拚花表因為清單目錄中的文件通常是低於閱讀從事務日誌文件的列表。
現有的應用程序移植到三角洲湖的時候,你應該避免以下操作,繞過事務日誌:
手動修改數據:三角洲湖使用事務日誌自動提交更改表。因為日誌是真理的源泉,文件寫入但不添加到事務日誌不讀火花。同樣,即使你手動刪除一個文件,文件指針仍然存在事務日誌。而不是手動修改文件存儲在一個增量表,總是使用本指南中描述的命令。
外部的讀者:直接讀取數據存儲在三角洲湖。如何閱讀三角洲的信息表,請參閱從外部訪問三角洲表數據處理引擎。
例子
假設你有拚花的數據存儲在一個目錄命名/數據管道
,你想創建一個增量表命名事件
。
的第一個例子顯示了如何:
閱讀拚花數據從原來的位置,
/數據管道
,DataFrame。DataFrame的內容保存在三角洲格式在一個單獨的位置,
/ tmp /δ/數據管道
。創建
事件
表基於單獨的位置,/ tmp /δ/數據管道
。
的第二個例子展示了如何使用轉換來表
從鋪三角洲格式轉換數據不改變原來的位置,/數據管道
。
這些示例創建一個非托管表,你繼續管理數據的指定位置。磚記錄的表的名稱及其metastore指定位置。
另存為三角洲表
鑲花的數據讀入DataFrame然後保存DataFrame的內容到一個新的目錄
δ
格式:數據=火花。讀。格式(“鋪”)。負載(“/數據管道”)數據。寫。格式(“δ”)。保存(“/ tmp /δ/數據管道/”)
創建一個增量表命名
事件
指新目錄中的文件:火花。sql(“創建表事件使用三角洲位置/ tmp /δ/數據管道/”)
轉換為三角洲表
你有三個選擇將鑲花表轉換為三角洲表:
將文件轉換為三角洲湖格式,然後創建一個增量表:
轉換來δ拚花。' /數據- - - - - -管道/ '創建表事件使用δ位置“數據管道/”
創建一個拚花表,然後把它轉換成一個增量表:
創建表事件使用拚花選項(路徑“數據管道/”)轉換來δ事件
拚花表轉換為三角洲表:
轉換來δ事件
這個假設表命名
事件
是一個拚花表格。
您還可以將冰山表轉換成三角洲湖使用雲存儲位置的文件路徑:
轉換來δ冰山。”s3:/ /我的- - - - - -桶/路徑/來/表”;
有關詳細信息,請參見冰山表轉換為三角洲表。