Earth Engine 提供不同的資料處理環境:互動式和批次。這兩個環境 (或「領域」) 會處理不同類型的查詢,效能特徵也大不相同,因此請務必瞭解何時及如何使用。
互動式環境
這個環境也稱為「同步」或「線上」堆疊,專門用來處理小型要求,並在短時間內完成 (回應資料大小上限為數十 MB,且必須在五分鐘內完成處理)。您可以並行提出多個要求,但不得超過配額限制。
端點
互動式環境是由不同 API 端點組成:標準和大量。
標準端點
標準端點適用於大多數人為驅動的使用情況,也是程式碼編輯器和 Earth Engine 應用程式的運作基礎。具體來說,這個端點最適合用於延遲時間敏感型應用程式,這類應用程式涉及少量並行的非程式輔助要求。
高用量端點
高用量端點的設計宗旨,是比標準端點能處理更多並行要求。主要差異如下:
- 延遲時間較長:高用量端點的每個要求平均延遲時間較長。
- 減少快取:減少快取中繼結果,因此複雜查詢可能需要更多運算時間。
- 最適合自動化的小型查詢:高用量端點擅長處理大量程式輔助要求,但最適合不需要彙整的簡單查詢 (例如從預先建構的圖片擷取圖塊)。
如需有效率地快取複雜分析,建議使用標準 API 端點。高用量端點經過最佳化,可處理高處理量、低運算量的作業。使用高用量端點時,複雜查詢通常需要比一般線上端點更多的 EECU 時間。
使用高用量端點
Python 用戶端
初始化 earthengine 程式庫時,請傳遞 opt_url 參數並設為 https://earthengine-highvolume.googleapis.com。如常,請務必傳遞適當的憑證,並指定 Cloud 專案。例如:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
JavaScript 用戶端
使用 ee.initialize() 初始化 earthengine 程式庫時,請將 https://earthengine-highvolume.googleapis.com 做為第一個參數傳遞。
REST API
將 REST 要求導向 https://earthengine-highvolume.googleapis.com (而非 https://earthengine.googleapis.com,如「REST API 快速入門」所示)。
批次環境
這個環境也稱為「非同步」或「離線」堆疊,經過最佳化後,可平行處理大量資料,但延遲時間較長。要求會以工作形式提交至批次處理端點,通常是透過呼叫資料匯入或匯出函式 (例如 Export.* 和 ee.batch.*) 從 Earth Engine 用戶端程式庫提交。每個批次工作的最長生命週期為十天。每個專案最多可支援 3, 000 個待處理工作,但每位使用者可同時執行的工作數量有限。
工作生命週期
工作會提交至佇列,並依優先順序 (最高優先順序優先) 和提交時間 (最早提交優先) 排序。工作指派給批次處理器後,就會從 SUBMITTED (已加入佇列) 狀態變更為 RUNNING 狀態。每個處理器負責協調不同數量的批次工作站,以執行運算並產生工作結果。工作的工作站數量取決於 EE 服務平行處理工作的能力,使用者無法設定。
使用雲端專案時,只要具備專案層級的列出工作權限,就能查看工作。如果專案已註冊付費的 Earth Engine 存取權,工作會依專案排入佇列;如果專案註冊的是免費 (研究) 存取權,工作會為每位使用者獨立排程,但專案使用者仍可查看。
如果工作建立必要的構件 (Earth Engine 資產、Google Cloud Storage 中的檔案等),即表示工作順利完成。
工作管理
您可以使用下列介面查看及取消工作:
- Cloud 控制台的「工作」頁面
- 在雲端專案層級啟用工作管理功能。日後,這將是管理工作的主要使用者介面。
- 工作管理員頁面
- 這個介面會顯示使用者和專案層級的工作,並支援依工作名稱篩選。
- 程式碼編輯器工作分頁
- 可同時監控工作和程式碼編輯器指令碼。
ListOperations端點和task指令- 最適合以程式輔助方式查看及管理工作。
工作失敗
如果工作因重試無法修正的原因而失敗 (例如資料無效),工作會標示為 FAILED,且不會再次執行。
如果工作因間歇性原因 (例如執行運算時逾時) 而失敗,Earth Engine 會自動嘗試重試,並填入 retries 欄位。工作最多可失敗五次,最終失敗會導致整個工作標示為 FAILED。
工作 ID
每項工作都有一個英數 ID,格式為 3DNU363IM57LNU4SDTMB6I33。您可以透過工作管理介面查看或取得這些資訊。如果您是以程式輔助方式啟動工作,可以從 ee.data.newTaskId 取得工作 ID。要求協助偵錯匯出或擷取工作時,請提供這項工作 ID 做為可複製的字串 (而非螢幕截圖)。
工作狀態清單
工作可具有下列 state 值:
UNSUBMITTED,仍待用戶端處理READY,在伺服器上排入佇列- 目前正在執行「
RUNNING」 COMPLETED,已順利完成FAILED,未順利完成CANCEL_REQUESTED,仍在執行中,但已要求取消 (即無法保證工作會取消)CANCELLED,業主已取消
工作優先順序
工作優先順序是一種機制,可控制佇列中的工作順序。 無論提交時間為何,系統都會先排定優先順序較高的工作,再排定其他優先順序較低的工作。預設工作優先順序為 100。
只有已註冊付費 Earth Engine 存取權的專案使用者,才能為匯出工作設定其他優先順序 (較高或較低)。變更匯出工作的優先順序,不會影響系統排定匯出工作相對於匯入工作的時間,因為這兩種工作是分開排定的。
範例:使用工作優先順序
請參考下列工作清單,其中工作 1 到 5 是以預設優先順序依序提交。由於優先順序相同,因此系統會依提交順序執行作業。此外,由於這個專案有兩個批次處理位置,因此會同時執行兩個作業 (提交的第一個和第二個作業)。
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
提交新工作「MyHighPriorityTask1」不會影響正在執行的工作:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
其中一項執行中的工作完成後,系統會執行優先順序最高的待處理工作 (在本例中,就是高優先順序工作):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100