新建跨源連接,顯示已激活,但使用時報communication link failure錯誤
-
原因
網絡連通性問題,建議用戶檢查安全組選擇是否正確,檢查安全組網絡(vpc)配置。
-
解決方法:
示列:創建RDS跨源,使用時報“communication link failure”錯誤。
a. 將原有跨源連接刪除重新創建。再次創建時,必須確保所選“安全組”、“虛擬私有云”、“子網””和“目的地址”與RDS中的設置完全一致。
說明請選擇正確的“服務類型”,本示例中為“RDS”。
b.檢查安全組網絡(vpc)配置。
若按照步驟1重建跨源連接后還是報錯“communication link failure”,則檢查vpc配置。
跨源訪問MRS HBase,連接超時,日志未打印錯誤
用戶在跨源連接中沒有添加集群主機信息,導致KRB認證失敗,故連接超時,日志也未打印錯誤。建議配置主機信息后重試。
在“增強型跨源”頁面,單擊該連接“操作”列中的“修改主機信息”,在彈出的對話框中,填寫主機信息。格式為:“IP 主機名/域名”,多條信息之間以換行分隔。
詳細操作請參考《數據湖探索用戶指南》中的“修改主機信息”章節。
DLI跨源連接報錯找不到子網
跨源連接創建對等連接失敗,報錯信息如下:
Failed to get subnet 2c2bd2ed-7296-4c64-9b60-ca25b5eee8fe. Response code : 404, message : {"code":"VPC.0202","message":"Query resource by id 2c2bd2ed-7296-4c64-9b60-ca25b5eee8fe fail.the subnet could not be found."}
創建跨源連接之前,需要確認是否勾選了“VPC Administrator”,如果只是勾選了全局的tenant administrator,會提示找不到子網。
跨源RDS表,執行insert overwrite報Incorrect string value錯誤
問題現象
客戶在數據治理中心DataArts Studio創建DLI的跨源RDS表,執行insert overwrite語句向RDS寫入數據報錯:DLI.0999: BatchUpdateException: Incorrect string value: '\xF0\x9F\x90\xB3' for column 'robot_name' at row 1。
原因分析
客戶的數據中存在emoj表情,這些表情是按照四個字節一個單位進行編碼的,而通常使用的utf-8編碼在mysql數據庫中默認是按照三個字節一個單位進行編碼的,這個原因導致將數據存入mysql數據庫時出現錯誤。
出現該問題可能原因如下:
數據庫編碼問題。
處理步驟
修改字符集為utf8mb4。
1.執行如下SQL更改數據庫字符集。
ALTER DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2.執行如下SQL更改表字符集。
ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
3.執行如下SQL更改表中所有字段的字符集。
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
創建RDS跨源表報空指針錯誤
問題現象
客戶創建RDS跨源表失敗,報空指針的錯誤。
原因分析
客戶建表語句:
CREATE TABLE IF NOT EXISTS dli_to_rds
USING JDBC OPTIONS (
'url'='jdbc:mysql://to-rds-1174405119-oLRHAGE7.datasource.com:5432/postgreDB',
'driver'='org.postgresql.Driver',
'dbtable'='pg_schema.test1',
'passwdauth' = 'xxx',
'encryption' = 'true');
客戶的RDS數據庫為PostGre集群,url的協議頭填寫錯誤導致。
處理步驟
修改url為'url'='jdbc:postgresql://to-rds-1174405119-oLRHAGE7.datasource.com:5432/postgreDB',重新創建跨源表成功。
對跨源DWS表執行insert overwrite操作,報錯:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated
問題現象
客戶對DWS執行并發insert overwrite操作,報錯:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated。
原因分析
客戶作業存在并發操作,同時對一張表執行兩個insert overwrite操作。
一個cn在執行:
TRUNCATE TABLE BI_MONITOR.SAA_OUTBOUND_ORDER_CUST_SUM
另外一個cn在執行:
call bi_monitor.pkg_saa_out_bound_monitor_p_saa_outbound_order_cust_sum
這個函數里面有delete 和 insert SAA_OUTBOUND_ORDER_CUST_SUM的操作。
處理步驟
修改作業邏輯,避免對同一張表并發執行insert overwrite操作。
通過跨源表向CloudTable Hbase表導入數據,executor報錯:RegionTooBusyException
問題現象
客戶通過DLI跨源表向CloudTable Hbase導入數據,原始數據:HBASE表,一個列簇,一個rowkey運行一個億的模擬數據,數據量為9.76GB。導入1000W條數據后作業失敗。
原因分析
- 查看driver錯誤日志。
- 查看executor錯誤日志。
- 查看task錯誤日志。
結論:rowkey過于集中,出現了熱點region。
處理步驟
- Hbase做預分區。
- 把rowkey散列化。
建議與總結
建議DLI在寫入數據時也將數據離散化,避免大量數據寫入同一個regionServer,同時,在insert語句后增加distribute by rand()。
通過DLI跨源寫DWS表,非空字段出現空值異常
問題現象
客戶在DWS建表,然后在DLI創建跨源連接讀寫該表,突然出現如下異常,報錯信息顯示DLI向該表某非空字段寫入了空值,因為非空約束存在導致作業出錯。
報錯信息如下:
DLI.0999: PSQLException: ERROR: dn_6009_6010: null value in column "ctr" violates not-null constraint
Detail: Failing row contains (400070309, 9.00, 25, null, 2020-09-22, 2020-09-23 04:30:01.741).
原因分析
1.DLI源表對應字段cir為double類型。
創建源表

2.目標表對應字段類型為decimal(9,6)。
創建目標表

3.查詢源表數據,發現導致問題產生的記錄ctr值為1675,整數位(4位)超出所定義的decimal精度(9 – 6 = 3位),導致double轉decimal時overflow產生null值,而對應dws表字段為非空導致插入失敗。
處理步驟
修改目的表所定義的decimal精度即可解決。
更新跨源目的端源表后,未同時更新對應跨源表,導致insert作業失敗
問題現象
客戶在DLI中創建了DWS跨源連接和DWS跨源表,然后對DWS中的源表schema進行更新,執行DLI作業,發現DWS中源表schema被修改為更新前的形式,導致schema不匹配,作業執行失敗。
原因分析
DLI跨源表執行insert操作時,會將DWS源表刪除重建,客戶沒有對應更新DLI端跨源表建表語句,導致更新的DWS源表被替換。
處理步驟
新建DLI跨源表,并添加建表配置項 truncate = true(只清空表數據,不刪除表)。
建議與總結
在更新跨源目的端源表后,必須同時更新對應DLI跨源表。