當使用者定義函式 (UDF) 無法如預期運作時,您需要對其進行偵錯,找出問題。 當您使用 Visual Studio Code 或 Visual Studio 在本機執行作業時,您可以針對串流分析作業偵錯 UDF。
當您在本機對即時輸入資料流執行作業時,其只會模擬在一個節點上執行雲端 Azure 串流分析引擎。 即時資料區域測試不能取代您在雲端執行的效能和可擴縮性測試,但是透過不須要每次想要測試時都將作業提交至雲端,您可以節省功能測試期間的時間。 此外,使用區域或樣本資料停用區域執行的時間原則,但是即時資料測試支援時間原則。
挑選您的語言
您可以使用 .NET (C#) 或 JavaScript 來寫入適用 Azure 串流分析的 UDF。
C# 中的函式
當您使用 Visual Studio 寫入 .NET UDF 時,您會取得與任何 .NET 類別專案相同的支援等級。 基本支援包含:
編譯支援,例如:語法檢查和編譯器支援。
在您的串流分析解決方案中新增、組建和參考 C# 專案和成品的能力。
輕鬆重複使用封裝在可共用專案中的程式碼。
直接偵錯 Visual Studio 中的支援。 將串流分析專案設定為起始專案,並在 C# 程式碼中設定中斷點。 然後,按 [F5],與任何其他 C# 專案一樣對 C# 程式碼進行偵錯。
JavaScript 中的函式
JavaScript 是在串流分析中建立函式的另一個選項。 JavaScript 程式碼會直接放入串流分析專案的函式區域中,這會讓跨專案共用更困難。
在編譯或執行串流分析專案時進行編譯。 發現問題的機會僅在執行階段時較高。 串流分析中沒有直接的 JavaScript 函式偵錯支援。
JavaScript 的偵錯選項
因為串流分析中沒有直接的 JavaScript 函式偵錯支援,所以您可以透過將函式封裝在 HTML 網站中,並且從該處取得輸出來偵錯。
下列範例說明如何使用 Visual Studio Code 中的整合執行階段環境中一些限制偵錯 JavaScript UDF。
必要條件
開始之前,請確定您的 Azure 串流分析專案具有下列項目:
- 輸入
- 輸出
- 串流分析查詢 (.asaql)
- 串流分析作業設定 (JobConfig.json)
- JavaScript UDF
準備檔案
在下列的圖片中,.asaql 查詢檔案只包含對 UDF、fxcharCount 的呼叫。 這項變更可以確保進行變更之後,您仍能夠編譯專案。
在測試中建立其他資料夾來裝載測試檔案,呼叫該檔案以使用 JavaScript 函式執行測試。 在此範例中,資料夾的名稱是 fxcharCount,而測試的名稱是 Test_UDF.js。
下方圖片顯示測試檔案中的程式碼,其會載入函式檔案並執行函式。 此範例很簡單,但是您可以載入其他測試資料檔案,並迴圈執行其他測試,取得輸出。 函式呼叫的標記法與一般呼叫略有不同,因為會參考檔案且不會載入執行階段,因此可以偵錯。
在該函式中,將下列程式碼新增至檔案,以公開方法。 其不會影響在 Visual Studio Code 中編譯程式碼的能力。
var methods = {};
methods.fxchartCount = fxchartCount;
exports.data = methods;
安裝偵錯支援
若要偵錯,您必須下載及安裝 node.js。 根據您使用的平台安裝正確的版本。 在您安裝 Node.js 執行階段之後,請重新啟動 Visual Studio Code 以實施變更。
選取 [執行並偵錯] 或按 [CTRL + SHIFT + D] 開始偵錯。 出現您可以選取 node.js 作為執行階段的下拉式方塊。 如果您只安裝 Node.js,則會使用其作為預設。 若有需要的話,您應該能夠使用 F11 逐步執行程式碼並進入附屬檔案。
偵錯使用者定義的彙總
您可以使用 JavaScript UDF 的偵錯方法來偵錯使用者定義的彙總 (UDA)。 在此範例中,UDA 會新增至 .asaql 查詢檔案和測試檔案。
如同 UDF,您會包含對 UDA 的呼叫,確保進行變更之後專案會進行編譯。
在 Test_UDA.js 檔案中,您會如同使用 UDF 一樣參考 UDA 檔案。 此外,您可以呼叫 main()
、init()
和 accumulate()
。 在迴圈中呼叫方法 accumulate()
,將值放入狀態堆疊。 呼叫方法 computeresult()
以撰寫最終查詢。
如同在 UDF 範例中,有些程式碼需要新增至 UDA 本身,才能公開相關方法。
var methods = {};
methods.main = main;
methods.init = main.init;
methods.accumulate = main.accumulate;
methods.computeResult = main.computeResult;
exports.data = methods;
選取 [執行並偵錯] 或按 [CTRL + SHIFT + D] 開始偵錯。 出現您可以選取 node.js 作為執行階段的下拉式方塊。 如果您只安裝 Node.js,則會使用其作為預設。 若有需要的話,您應該能夠使用 F11 逐步執行程式碼並進入附屬檔案。