Flink遷移DLF 1.0 Paimon表至DLF 2.0
本文介紹如何通過Flink部署JAR作業(yè)將DLF 1.0 Paimon表結(jié)構(gòu)遷移至DLF 2.0。
背景信息
當(dāng)您需遷移DLF 1.0 Paimon表至DLF 2.0時(shí),您可通過Flink Paimon Action JAR作業(yè)進(jìn)行遷移,此時(shí)元數(shù)據(jù)和數(shù)據(jù)均遷移至DLF 2.0 中。
遷移作業(yè)只遷移最新的Snaphot。
前提條件
已創(chuàng)建Flink全托管工作空間,引擎版本須為VVR 8.0.9及以上。詳情請(qǐng)參見開通實(shí)時(shí)計(jì)算Flink版。
已開通OSS并創(chuàng)建存儲(chǔ)空間,詳情請(qǐng)參見創(chuàng)建存儲(chǔ)空間。
已創(chuàng)建DLF 1.0數(shù)據(jù)目錄,已在DLF 1.0上使用托管于OSS上的Paimon表,并可通過Flink VVP訪問。詳情請(qǐng)參見元數(shù)據(jù)管理和創(chuàng)建Paimon DLF Catalog。
已創(chuàng)建DLF 2.0數(shù)據(jù)目錄,請(qǐng)參見新建數(shù)據(jù)目錄。
操作步驟
步驟一:創(chuàng)建JAR作業(yè)
登錄實(shí)時(shí)計(jì)算控制臺(tái),在Flink全托管頁簽下選擇目標(biāo)工作空間,單擊控制臺(tái)進(jìn)入實(shí)時(shí)計(jì)算 Flink 版。
左側(cè)菜單欄選擇
,進(jìn)入作業(yè)運(yùn)維頁面。單擊部署作業(yè),選擇JAR作業(yè),在彈窗中填寫參數(shù)。關(guān)鍵參數(shù)如下:
參數(shù)
描述
本文示例
部署模式
如果被克隆的表在克隆過程中不需要寫入,推薦使用批模式以獲得更好的性能;否則,請(qǐng)使用流模式。
流模式
部署名稱
填寫對(duì)應(yīng)的JAR作業(yè)英文名。
migrate_paimon
引擎版本
選擇實(shí)時(shí)計(jì)算引擎VVR 8.0.5及以上版本。
vvr-8.0.10-flink-1.17
JAR URI
上傳paimon-flink-action JAR包。
上傳paimon-flink-action-1.0-SNAPSHOT.jar包。若上傳過,可在下拉菜單中選擇。
Entry Point Class
程序的入口類。
不填寫。
Entry Point Main Arguments
傳入?yún)?shù),在主方法里調(diào)用該參數(shù)。
此處不填寫。具體參數(shù)根據(jù)不同作業(yè)而定,詳情見步驟二。
附加依賴文件
指定要附加的依賴文件的路徑或文件名。
上傳paimon-ali-vvr-8.0-vvp-1.0-ali-SNAPSHOT.jar包。若上傳過,可在下拉菜單中選擇。
說明更多部署參數(shù)說明,請(qǐng)參見Flink 部署JAR作業(yè)。
單擊彈窗右下角的部署按鈕,完成JAR作業(yè)的創(chuàng)建。
步驟二:調(diào)整參數(shù)并啟動(dòng)作業(yè)
Flink Paimon作業(yè)可支持遷移整個(gè)Catalog、整個(gè)數(shù)據(jù)庫或單個(gè)Paimon表。根據(jù)不同作業(yè)目的,調(diào)整Entry Point Main Arguments
參數(shù)。
在作業(yè)運(yùn)維列表選擇剛創(chuàng)建的JAR作業(yè),單擊名稱查看部署詳情。
在部署詳情頁,點(diǎn)擊右上角編輯按鈕,重新填寫
Entry Point Main Arguments
參數(shù)。clone --parallelism '<parallelism>' --warehouse '<warehouse>' --database '<database-name>' --table '<table-name>' --catalog_conf 'metastore=dlf' --catalog_conf 'dlf.catalog.id=<dlf.catalog.id>' --catalog_conf 'dlf.catalog.accessKeyId=<dlf.catalog.accessKeyId>' --catalog_conf 'dlf.catalog.accessKeySecret=<dlf.catalog.accessKeySecret>' --catalog_conf 'dlf.catalog.endpoint=<dlf.catalog.endpoint>' --catalog_conf 'dlf.catalog.region=<dlf.catalog.region>' --catalog_conf 'fs.oss.endpoint=<fs.oss.endpoint>' --catalog_conf 'fs.oss.accessKeyId=<fs.oss.accessKeyId>' --catalog_conf 'fs.oss.accessKeySecret=<fs.oss.accessKeySecret>' --target_warehouse '<target-warehouse>' --target_database '<target-database-name>' --target_table '<target-table-name>' --target_catalog_conf 'metastore=dlf-paimon' --target_catalog_conf 'dlf.endpoint=<dlf.endpoint>' --target_catalog_conf 'dlf.region=<dlf.region>' --target_catalog_conf 'dlf.catalog.instance.id=<dlf.catalog.instance.id>'
具體配置項(xiàng)說明如下:
配置項(xiàng)
描述
是否必填
備注
parallelism
作業(yè)的并發(fā)度。
是
示例:16
warehouse
需要克隆的DLF 1.0數(shù)據(jù)目錄(Catalog)的 OSS倉庫路徑。
是
格式為oss://<bucket>/<object>。其中:
bucket:表示您創(chuàng)建的OSS Bucket名稱。
object:表示您存放數(shù)據(jù)的路徑。
請(qǐng)?jiān)?a id="547fef0ceard7" class="" target="_blank">OSS管理控制臺(tái)上查看您的bucket和object名稱。
database-name
需要克隆的DLF 1.0數(shù)據(jù)庫名。
否
示例:my_database
table-name
需要克隆的DLF 1.0數(shù)據(jù)表名。
否
示例:my_table
dlf.catalog.id
DLF 1.0數(shù)據(jù)目錄ID。
是
請(qǐng)?jiān)跀?shù)據(jù)湖構(gòu)建控制臺(tái)上查看數(shù)據(jù)目錄對(duì)應(yīng)的ID,具體操作請(qǐng)參見數(shù)據(jù)目錄。
dlf.catalog.accessKeyId
訪問DLF服務(wù)所需的Access Key ID。
是
獲取方法請(qǐng)參見創(chuàng)建AccessKey。
dlf.catalog.accessKeySecret
訪問DLF服務(wù)所需的Access Key Secret。
是
dlf.catalog.endpoint
DLF服務(wù)的Endpoint。
是
詳情請(qǐng)參見已開通的地域和訪問域名。如果Flink與DLF位于同一地域,則使用VPC網(wǎng)絡(luò)Endpoint,否則使用公網(wǎng)Endpoint。
示例:dlf-vpc.cn-hangzhou.aliyuncs.com。
dlf.catalog.region
DLF所在區(qū)域。
是
詳情請(qǐng)參見已開通的地域和訪問域名。請(qǐng)和dlf.catalog.endpoint選擇的地域保持一致。
示例:cn-hangzhou。
fs.oss.endpoint
OSS服務(wù)的連接地址。
是
獲取方法請(qǐng)參見OSS地域和訪問域名。如果Flink與DLF位于同一地域,則使用VPC網(wǎng)絡(luò)Endpoint,否則使用公網(wǎng)Endpoint。
示例:oss-cn-hangzhou-internal.aliyuncs.com。
fs.oss.accessKeyId
擁有OSS讀寫權(quán)限的阿里云賬號(hào)或RAM賬號(hào)的Accesskey ID。
是
獲取方法請(qǐng)參見創(chuàng)建AccessKey。
fs.oss.accessKeySecret
擁有OSS讀寫權(quán)限的阿里云賬號(hào)或RAM賬號(hào)的Accesskey secret。
是
target-warehouse
克隆的DLF 2.0 數(shù)據(jù)目錄(Catalog)的 OSS倉庫路徑
是
DLF2 Catalog 并沒有該參數(shù),此處無需填寫。
說明由于歷史原因,此參數(shù)必填,您可填寫任意值以防報(bào)錯(cuò)。請(qǐng)勿填寫OSS地址,可填寫xxx繞過檢查,
target-database-name
克隆的DLF 2.0 數(shù)據(jù)庫名
否
示例:target_database
target-table-name
克隆的DLF 2.0 數(shù)據(jù)表名
否
示例:targety_table
dlf.endpoint
DLF服務(wù)的Endpoint。
是
跨域(oxs區(qū)):dlfnext-share.[regionId].aliyuncs.com。
vpc 區(qū) :dlfnext-vpc.[regionId].aliyuncs.com。
公網(wǎng): dlfnext.[regionId].aliyuncs.com。
詳情請(qǐng)參見已開通的地域和訪問域名。
示例:dlfnext-vpc.cn-hangzhou.aliyuncs.com。
dlf.region
DLF所在區(qū)域
是
詳情請(qǐng)參見已開通的地域和訪問域名。請(qǐng)和dlf.endpoint選擇的地域保持一致。
示例:cn-hangzhou。
dlf.catalog.id
DLF 2.0 數(shù)據(jù)目錄ID。
是
請(qǐng)?jiān)跀?shù)據(jù)湖構(gòu)建控制臺(tái)上查看數(shù)據(jù)目錄對(duì)應(yīng)的ID。
示例:clg-paimon-xxxx。
重要若需遷移整個(gè)數(shù)據(jù)庫,請(qǐng)勿設(shè)置
table-name
和target-table-name
。若需遷移整個(gè)數(shù)據(jù)目錄,請(qǐng)勿設(shè)置
database-name
和target-database-name
。
完成參數(shù)配置之后,單擊部署詳情頁右上角的保存按鈕。
單擊作業(yè)運(yùn)維頁右上角的啟動(dòng)按鈕,保持默認(rèn)參數(shù),啟動(dòng)作業(yè)。
步驟三:驗(yàn)證作業(yè)結(jié)果
當(dāng)作業(yè)狀態(tài)變成已完成時(shí),登錄DLF 1.0 控制臺(tái)和DLF 2.0 控制臺(tái),檢查是否遷移成功。
若是整個(gè)Catalog遷移:檢查DLF 2.0中的Catalog結(jié)構(gòu)以及內(nèi)部的庫、表是否與DLF 1.0 保持一致。
若是整個(gè)數(shù)據(jù)庫遷移:檢查DLF 2.0中的庫、表結(jié)構(gòu)是否與DLF 1.0 保持一致。
若是單個(gè)數(shù)據(jù)表遷移:檢查DLF 2.0中的表結(jié)構(gòu)是否與DLF 1.0 保持一致。
常見問題
Q:作業(yè)運(yùn)行過程,OSS權(quán)限報(bào)錯(cuò)Access Denied by bucket policy。
target-warehouse參數(shù)請(qǐng)勿填寫OSS地址,可填寫XXX繞過必填檢查。
相關(guān)文檔
使用Flink管理Paimon Catalog,可參見管理Paimon Catalog。
使用Flink管理Paimon數(shù)據(jù),可參見Paimon數(shù)據(jù)管理配置。
Flink VVP + DLF 1.0實(shí)踐,可參見Flink VVP+DLF數(shù)據(jù)入湖與分析實(shí)踐。