分享方式:


在 Azure 串流分析中偵錯使用者定義函式

當使用者定義函式 (UDF) 無法如預期運作時,您需要對其進行偵錯,找出問題。 當您使用 Visual Studio CodeVisual 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;

串流分析 JavaScript UDF

安裝偵錯支援

若要偵錯,您必須下載及安裝 node.js。 根據您使用的平台安裝正確的版本。 在您安裝 Node.js 執行階段之後,請重新啟動 Visual Studio Code 以實施變更。

選取 [執行並偵錯] 或按 [CTRL + SHIFT + D] 開始偵錯。 出現您可以選取 node.js 作為執行階段的下拉式方塊。 如果您只安裝 Node.js,則會使用其作為預設。 若有需要的話,您應該能夠使用 F11 逐步執行程式碼並進入附屬檔案。

串流分析執行並偵錯 udf

偵錯使用者定義的彙總

您可以使用 JavaScript UDF 的偵錯方法來偵錯使用者定義的彙總 (UDA)。 在此範例中,UDA 會新增至 .asaql 查詢檔案和測試檔案。

如同 UDF,您會包含對 UDA 的呼叫,確保進行變更之後專案會進行編譯。

將 uda 新增至 asaql

Test_UDA.js 檔案中,您會如同使用 UDF 一樣參考 UDA 檔案。 此外,您可以呼叫 main()init()accumulate()。 在迴圈中呼叫方法 accumulate(),將值放入狀態堆疊。 呼叫方法 computeresult() 以撰寫最終查詢。

UDA 測試檔案

如同在 UDF 範例中,有些程式碼需要新增至 UDA 本身,才能公開相關方法。

var methods = {};
methods.main = main;
methods.init = main.init;
methods.accumulate = main.accumulate;
methods.computeResult = main.computeResult;
exports.data = methods;

新增至 UDA 的程式代碼

選取 [執行並偵錯] 或按 [CTRL + SHIFT + D] 開始偵錯。 出現您可以選取 node.js 作為執行階段的下拉式方塊。 如果您只安裝 Node.js,則會使用其作為預設。 若有需要的話,您應該能夠使用 F11 逐步執行程式碼並進入附屬檔案。

串流分析執行和偵錯 uda

下一步