天天看點

SaaS模式雲資料倉庫 MaxCompute 問答整理之2020-09~10月

本文是基于本人對MaxCompute産品的學習進度,再結合開發者社群釘群裡的一些問題,進而整理成文。希望對大家有所幫助。

問題一、MaxCompute中,同一時間操作同一張表的同一分區,會産生資料翻倍的情況嗎?

不會,MaxCompute在更新中繼資料的時候不允許同時更新中繼資料。

問題二、MaxCompute中執行SQL報錯ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: java.lang.RuntimeException: com.aliyun.odps.lot.cbo.FailFastException: instance count exceeds limit 99999.

單作業需要的并發超過最大限制,可通過調整split size降低并發量來解決。可以設定一下set設定,set odps.sql.mapper.split.size=512 ,調整每個Mapper讀取table資料的大小,機關是MB。

問題三、在DataWorks表管理中添加的表,修改字段名稱報錯。

可以使用DDL語句ALTER TABLE 修改。可以參考文檔:

https://help.aliyun.com/document_detail/73771.html

問題四、MaxCompute可以指定列進行 insert overwrite嗎?

insert overwrite 不支援指定插入列的功能,可以用insert into或者設計一張拉連結清單。可以參考這篇文章:

https://developer.aliyun.com/article/542146

問題五、MaxCompute中,按照分區查詢資料的文法是什麼?

select *from table where dt='1'; 可以參考文檔:

https://help.aliyun.com/document_detail/73777.html

問題六、MaxCompute SQL task 能執行文法檢查嗎?

可以執行一下explian,參考官方文檔:

https://help.aliyun.com/document_detail/73787.html

問題七、使用Tunnel 可以下載下傳某個分區的資料嗎?

可以,參考一下Tunnel 指令說明文檔:

https://help.aliyun.com/document_detail/27833.html

問題八、不同工作空間的表是否可以互相引用?

可以,授權就可以。可以參考一下文檔:

https://help.aliyun.com/document_detail/27935.html

問題九、請問MaxCompute表字段string類型的資料長度大于8MB怎麼解決?

有兩個方法:1、拆分字段。2、使用獨享資源組,再提工單綁定可以解決大于8MB問題。

問題十、字段為空字元串的怎麼在SQL裡面過濾掉?

SaaS模式雲資料倉庫 MaxCompute 問答整理之2020-09~10月

可以使用uid!='';

問題十一、PyODPS 操作 SQL 的示例代碼有擷取記錄數的操作,放到 MaxCompute 中運作的就提示沒有 count 屬性了,怎麼解決?

Dataworks上預設未開啟Instance Tunnel,即instance.open_reader預設使用Result接口,最多可以擷取一萬條記錄。開啟Instance Tunnel後,可以通過reader.count擷取記錄數。

問題十二、MaxCompute中,CAST(substr(sdk_channel,1,1) AS BIGINT) = 1 或 CAST(t.is_client AS BIGINT) = 1 報錯: Illegal type cast - in function cast, value 'n' cannot be casted from String to Bigint

substr 是對字元串截取 (),該函數裡面的 兩個參數 是 下标和截取個數,代碼截的是 string類型,外面的 cast 函數是對類型進行轉換,如果裡面截出來的例如:abc,根本無法轉換成 bigint,如果截出來是數字 123 是可以的 轉成 bigint的。 例如:select cast(substr("1234",1,1) as BIGINT );

更多關于大資料計算産品技術交流,可掃碼加入 “MaxCompute開發者社群” 釘釘群

SaaS模式雲資料倉庫 MaxCompute 問答整理之2020-09~10月