用戶導表到OBS報“pathobs://xxx already exists”錯誤
用戶可新建一個不存在的OBS目錄或手動刪除已存在的OBS目錄,再重新提交作業。刪除已存在的OBS目錄后,目錄下的所有數據將會被刪除。請謹慎執行此刪除操作。
對兩個表進行join操作時,提示:SQL_ANALYSIS_ERROR: Reference 't.id' is ambiguous, could be: t.id,t.id.;
出現這個提示,表示進行join操作的兩個表中包含相同的字段,但是在執行命令時,沒有指定該字段的歸屬。
例如:在表tb1和tb2中都包含字段“id”。
錯誤的命令:
select id from tb1 join tb2;
正確的命令:
select tb1.id from tb1 join tb2;
執行查詢語句報錯:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget.
請先確認是否欠費,如有欠費請充值。
如果充值后仍然提示相同的錯誤,請退出賬號后重新登錄。
執行查詢語句報錯:There should be at least one partition pruning predicate on
partitioned table XX.YYY]()
原因分析:
上述報錯信息說明:partitioned
table XX.YYY執行查詢時,其查詢條件中未使用其表分區列。
查詢分區表時,查詢條件中每個分區表必須包含至少一個分區列才允許執行,否則不允許執行。
解決方法:
建議用戶參考如下例子查詢分區表:
其中partitionedTable為分區表,partitionedColumn為分區列,查詢語句為:
SELECT * FROM partitionedTable WHERE partitionedColumn = XXX
查詢每個分區表時必須包含至少一個分區條件。
LOAD數據到OBS外表報錯:IllegalArgumentException: Buffer size too small. size
問題描述
在Spark SQL作業中,使用LOAD DATA命令導入數據到DLI表中時報如下錯誤:
error.DLI.0001: IllegalArgumentException: Buffer size too small. size = 262144 needed = 2272881
或者如下錯誤
error.DLI.0999: InvalidProtocolBufferException: EOF in compressed stream footer position: 3 length: 479 range: 0 offset: 3 limit: 479 range 0 = 0 to 479 while trying to read 143805 bytes
問題原因
上述報錯可能原因是當前導入的文件數據量較大,同時因為spark.sql.shuffle.partitions參數設置的并行度過大,導致緩存區大小不夠而導入數據報錯。
解決方案
建議可以嘗試調小spark.sql.shuffle.partitions參數值來解決緩沖區不足問題。具體該參數設置步驟如下:
1.登錄DLI管理控制臺,單擊“作業管理 > SQL作業”,對應SQL作業行的操作列,單擊“編輯”按鈕,跳轉到“SQL編輯器”。
2.在“SQL編輯器”中,單擊“設置”,參考如下圖配置添加參數。
3.重新執行作業。
SQL作業運行報錯:DLI.0002 FileNotFoundException
問題現象
SQL作業執行報錯,報錯信息大致如下:
Please contact DLI service. DLI.0002: FileNotFoundException: getFileStatus on obs://xxx: status [404]
解決方案
請排查在同一時間點是否還有另外作業對當前報錯作業操作的表信息有刪除操作。
DLI不允許同時有多個作業在同一時間點對相同表進行讀寫操作,否則會造成作業沖突,導致作業運行失敗。
用戶通過CTAS創建hive表報schema解析異常錯誤
目前DLI支持hive語法創建TEXTFILE、SEQUENCEFILE、RCFILE、ORC、AVRO、PARQUET文件類型的表,如果用戶CTAS建表指定的文件格式為AVRO類型,而且直接使用數字作為查詢語句(SELECT)的輸入,如“CREATE TABLE tb_avro STORED AS AVRO AS SELECT 1”則會報schema解析異常。
此問題的原因是如果不指定列名,則會把SELECT后的內容同時作為列名和插入值,而AVRO格式的表不支持列名為數字,所以會報解析schema異常錯誤。
用戶可以通過“CREATE TABLE tb_avro STORED AS AVRO AS SELECT 1 AS colName”指定列名的方式解決該問題,或者將存儲格式指定為除AVRO以外的其它格式。
在DataArts Studio上運行DLI SQL腳本,執行結果報org.apache.hadoop.fs.obs.OBSIOException錯誤
問題現象
在DataArts Studio上運行DLI SQL腳本,執行結果的運行日志顯示語句執行失敗,錯誤信息為:
DLI.0999: RuntimeException: org.apache.hadoop.fs.obs.OBSIOException: initializing on obs://xxx.csv: status [-1] - request id
[null] - error code [null] - error message [null] - trace :com.obs.services.exception.ObsException: OBS servcie Error Message. Request Error:
...
Cause by: ObsException: com.obs.services.exception.ObsException: OBSs servcie Error Message. Request Error: java.net.UnknownHostException: xxx: Name or service not known
問題根因
第一次執行DLI SQL腳本,用戶沒有在DLI控制臺上同意隱私協議導致在DataArts Studio運行SQL腳本報錯。
解決方案
1.登錄DLI控制臺,選擇“SQL編輯器”,輸入任意執行一個SQL語句,比如“select 1”。
2.彈出隱私協議后,勾選“同意以上隱私協議”,單擊“確定”。
說明該隱私協議只需要在第一次執行時同意即可,后續再次運行不再會彈出和確認。
3.重新在DataArts Studio上運行DLI SQL腳本,腳本運行正常。
使用CDM遷移數據到DLI,遷移作業日志上報UQUERY_CONNECTOR_0001:Invoke DLI service api failed錯誤
問題現象
在CDM遷移數據到DLI,遷移作業提交后,在CDM作業遷移日志中查看作業執行失敗,具體日志有如下報錯信息:
org.apache.sqoop.common.SqoopException: UQUERY_CONNECTOR_0001:Invoke DLI service api failed, failed reason is %s.
at org.apache.sqoop.connector.uquery.intf.impl.UQueryWriter.close(UQueryWriter.java:42)
at org.apache.sqoop.connector.uquery.processor.Dataconsumer.run(Dataconsumer.java:217)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
問題原因
在CDM界面創建遷移作業,配置DLI目的連接參數時,“資源隊列”參數錯誤選成了DLI的“通用隊列”,應該選擇DLI的“SQL隊列”。
解決方案
1.登錄DLI管理控制臺,選擇“隊列管理”,在隊列管理界面查看是否有“SQL隊列”類型的隊列。
?是,執行3。
?否,執行2購買“SQL隊列”類型的隊列。
2.單擊“購買隊列”創建隊列,其中隊列類型選擇“SQL隊列”,選擇其他參數后提交創建。
3.在CDM側重新配置遷移作業的DLI目的連接參數,其中資源隊列”參數選擇已創建的DLI“SQL隊列”。
4.CDM重新提交遷移作業,查看作業執行日志。
SQL作業訪問報錯:File not Found
問題現象
執行SQL作業訪問報錯:File not Found。
解決措施
文件報錯找不到,一般是讀寫沖突產生的,建議查詢一下SQL查詢報錯表的時候,是否有作業正在覆蓋寫對應數據。
SQL作業訪問報錯:DLI.0003: AccessControlException XXX
問題現象
SQL作業訪問報錯:DLI.0003: AccessControlException XXX。
解決措施
請查看下AccessControlException寫的OBS桶,確認當前賬號是否有訪問桶的權限。
SQL作業訪問外表報錯:DLI.0001: org.apache.hadoop.security.AccessControlException: verifyBucketExists on}: status [403]
問題現象
SQL作業訪問外表報錯:DLI.0001: org.apache.hadoop.security.AccessControlException: verifyBucketExists on {{桶名}}: status [403]。
解決措施
當前賬號沒有訪問該外表所在OBS桶的權限,請添加相應OBS權限再執行該查詢。
執行SQL語句報錯:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget.
問題現象
執行SQL語句報錯:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget。
解決措施
請先確認帳號否欠費,如帳號欠費請續費后重試。
如果續費后重試仍然提示相同的錯誤,請退出賬號后重新登錄。