日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Tunnel SDK常見問題

本文為您介紹使用Tunnel SDK過程中的常見問題。

問題類別

常見問題

Tunnel SDK Upload

Tunnel SDK Download

使用Tunnel SDK下載數據時,報錯You need to specify a partitionspec along with the specified table,如何解決?

其他問題

使用Tunnel SDK上傳數據時,上傳的數據可以自動分配到各個分區嗎?

Tunnel SDK上傳數據時,是無法自動分配到各個分區的。每一次上傳只支持將數據上傳到一張表或表的一個分區,有分區的表一定要指定上傳的分區,多級分區一定要指定到末級分區。

使用Tunnel SDK上傳數據時,編寫完UDF打成JAR包后上傳,對JAR包大小有要求嗎?

JAR包不能超過10 MB,如果JAR包超過10 MB,建議轉用MaxCompute Tunnel Upload命令上傳數據。

使用Tunnel SDK上傳數據時,是否有分區數量限制?

最大支持6萬個分區。分區數量過多,不方便進行統計和分析。MaxCompute會限制單個作業中Instance的數量。作業的Instance和用戶輸入的數據量及分區數量是密切相關的,因此建議先評估下業務,選擇合適的分區策略,避免分區過多帶來的影響。

使用Tunnel SDK上傳數據時,報錯StatusConflict,如何解決?

  • 問題現象

    使用Tunnel SDK上傳數據時,返回如下報錯。

    RequestId=20170116xxxxxxx, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status. java.io.IOException: RequestId=20170116xxxxxxx, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.at com.aliyun.odps.tunnel.io.TunnelRecordWriter.close(TunnelRecordWriter.java:93)
  • 問題原因:該問題是在Close RecordWriter時出現的,可能原因如下。

    • 對一個已經關閉的RecordWriter執行了關閉操作。

    • RecordWriter對應的Session已經關閉。

    • Session已經提交過。

  • 解決措施:您可以針對上述可能出現的原因進行排查,比如打印一些日志、在提交Session前打印一些當前RecordWriter的狀態與Session的狀態。確保無上述問題后,重新嘗試上傳數據。

使用Tunnel SDK上傳數據時,報錯Blocks Not Match,如何解決?

  • 問題現象:

    使用Tunnel SDK上傳數據時,返回如下報錯。

    ErrorCode=Local Error, ErrorMessage=Blocks not match, server: 0, tunnelServiceClient: 1
    at com.aliyun.odps.tunnel.TableTunnel$UploadSession.commit(TableTunnel.java:814)      
  • 產生原因

    服務器收到的Block個數和Commit時參數的個數不一致。

  • 解決措施

    • 在代碼中查看uploadSession.openRecordWriter(i)打開的Writer個數和Commit時的Block數組,確保相對應。

    • 代碼中寫入執行完成后,確認是否調用recordWriter.close(); 。如果直接執行Commit,可能導致服務器端的Block個數不符合預期。

一次性上傳8000萬條數據,在執行odps tunnel recordWriter.close()時報錯StatusConflict,如何解決?

  • 問題現象

    一次性上傳8000萬條數據,在執行odps tunnel recordWriter.close()時,返回如下報錯。

    ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.
  • 產生原因

    Session狀態錯誤,前面的操作里已經關閉或者提交了該Session。

  • 解決措施

    建議重新創建一個Session再上傳一次數據。對于不同的分區,每個分區需要單獨的一個Session。對于多次提交導致報錯,請先檢查數據是否已經上傳成功,如果失敗,請重新上傳一次,請參見多線程上傳示例

如何使用TunnelBufferedWriter規避使用Tunnel SDK進行批量數據上傳出錯的問題?

MaxCompute Java SDK在0.21.3-public版本之后新增了BufferedWriter的SDK,簡化了數據上傳,并且提供了容錯功能。BufferedWriter從用戶角度看,就是在Session上打開一個Writer然后進行寫記錄即可。具體實現是,BufferedWriter先將記錄緩存在客戶端的緩沖區中,并在緩沖區填滿之后打開一個HTTP連接進行上傳。

BufferedWriter會盡最大可能容錯,保證數據上傳成功,使用方法請參見TunnelBufferedWriter

使用Tunnel SDK下載數據時,報錯You need to specify a partitionspec along with the specified table,如何解決?

  • 問題現象

    使用Tunnel SDK下載分區表數據,返回如下報錯。

    ErrorCode=MissingPartitionSpec, ErrorMessage=You need to specify a partitionspec along with the specified table.       
  • 產生原因

    使用Tunnel SDK下載分區表數據時,需要指定分區列的列值,否則會報錯。

  • 解決措施

    • 如果您使用MaxCompute客戶端工具里的Tunnel命令行進行導出,客戶端支持分區表整個導出,其結果會導出到一個文件夾里。

    • 如果您使用Tunnel SDK進行導出,可以先使用SDK獲取分區表的所有分區,命令示例如下。

      odps.tables().get(tablename) t.getPartitions()      

MaxCompute Tunnel目前支持哪些語言的SDK?

MaxCompute Tunnel目前支持Java版的SDK。

BlockId是否可以重復?

同一個UploadSession中的BlockId不能重復。對于同一個UploadSession,用一個BlockId打開RecordWriter,寫入一批數據后,調用Close,寫入成功后不可以再用該BlockId打開另一個RecordWriter寫入數據。Block默認最多20000個,即取值范圍為0~19999。

Block大小是否存在限制?

每次上傳至Tunnel的數據塊大小默認為100 MiB。一個Block大小上限為100 GB,強烈建議為大于64 MB的數據,每一個Block對應一個文件,小于64 MB的文件統稱為小文件,小文件過多將會影響使用性能。如果數量較大且是持續上傳模式,Block的數據量在64 MB~256 MB之間; 如果是每天傳一次的批量模式,Block可以設置為1 GB左右。

使用新版BufferedWriter可以更簡單地進行上傳且可以避免小文件等問題,詳情請參見TunnelBufferedWriter

遇到讀寫超時或IOException時,如何解決?

上傳數據時,Writer每寫入8 KB數據會觸發一次網絡動作,如果120秒內沒有網絡動作,服務端將主動關閉連接,屆時Writer將不可用,請重新打開一個新的Writer寫入。

建議您使用TunnelBufferedWriter

下載數據時,Reader也有類似機制,若長時間沒有網絡動作會斷開連接,建議Reader過程連續進行,中間不穿插其他系統的接口。