在 Azure Synapse Analytics 資料總管集區上設定串流擷取 (預覽)
當您在內嵌和查詢之間需要低延遲時,串流擷取有助於載入資料。 在下列情節中,請考慮使用串流擷取:
- 需要不到一秒的延遲。
- 將許多資料表的操作處理最佳化,其中,進入每個資料表的資料串流相當小 (每秒幾筆記錄),但整體資料內嵌數量很大 (每秒上千筆記錄)。
如果進入每個資料表的資料串流很大 (每小時超過 4 GB),請考慮使用批次擷取。
若要深入了解各種擷取方法,請參閱資料擷取概觀。
選擇適當的串流擷取類型
支援兩種串流內嵌類型:
擷取類型 | Description |
---|---|
事件中樞或 IoT 中樞 | 中樞設定為資料表串流資料來源。 如需這些設定的詳細資訊,請參閱事件中樞。 |
自訂擷取 | 自訂擷取需要您撰寫應用程式,以使用其中一個 Azure Synapse Analytics 資料總管用戶端程式庫。 請使用本主題中的資訊來設定自訂擷取。 您也可能覺得 C# 串流擷取範例應用程式很有用。 |
請使用下表協助您選擇適合環境的擷取類型:
條件 | 事件中樞/IoT 中樞 | 自訂擷取 |
---|---|---|
擷取初始和可供查詢的資料之間的資料延遲 | 延遲較長 | 延遲較短 |
開發額外負荷 | 快速又輕鬆的設定,無開發額外負荷 | 建立應用程式來內嵌資料、處理錯誤及確保資料一致性的開發額外負荷很高 |
注意
如果 Synapse 工作區使用已啟用資料外流保護的受控虛擬網路,則無法將資料從事件中樞內嵌至資料總管集區。
必要條件
Azure 訂用帳戶。 建立 Azure 免費帳戶。
使用 Synapse Studio 或 Azure 入口網站建立資料總管集區
建立資料總管資料庫。
在 Synapse Studio 的左側窗格上,選取 [資料]。
選取 + (新增資源) >[資料總管集區],並使用下列資訊:
設定 建議的值 描述 集區名稱 contosodataexplorer 要使用的資料總管集區名稱 Name TestDatabase 資料庫名稱在叢集內必須是唯一而不重複。 預設保留期限 365 保證資料持續可供查詢的時間範圍 (天)。 系統會從內嵌資料的時間開始測量時間範圍。 預設快取期間 31 在 SSD 儲存裝置或 RAM 中 (而非長期儲存裝置),讓受到頻繁查詢的資料維持可用狀態的時間範圍 (天)。 選取 [建立] 以建立資料庫。 建立時間通常不到一分鐘。
- 取得查詢端點和資料擷取端點。
在 Synapse Studio 的左側窗格上,選取 [管理] > [資料總管集區]。
選取您要檢視詳細資料的資料總管集區。
記下查詢端點和資料擷取端點。 設定資料總管集區的連線時,請使用查詢端點作為叢集。 設定 SDK 以便進行資料擷取時,請使用資料擷取端點。
效能與操作考量
可能影響串流擷取的主要因素如下:
- 計算規格:串流擷取效能和容量隨著資料總管集區大小增加而縮放。 並行擷取要求數限制為每個核心六個要求。 例如,若為 16 核心工作負載類型,例如計算最佳化 (大型) 和儲存體最佳化 (大型),則支援的最大負載為 96 個並行擷取要求。 若為雙核心工作負載類型,例如計算最佳化 (超小型),則支援的最大負載為 12 個並行擷取要求。
- 資料大小限制:串流擷取要求的資料大小限制為 4 MB。
- 結構描述更新:結構描述更新 (例如建立和修改資料表和擷取對應) 最多可能需要留五分鐘給串流擷取服務。 如需詳細資訊,請參閱串流擷取和結構描述變更。
- SSD 容量:在資料總管集區上啟用串流擷取時,即使不是透過串流來內嵌資料,也會使用資料總管集區機器的一部分本機 SSD 磁碟來串流擷取資料,而減少經常性快取可用的儲存體。
在資料總管集區上啟用串流擷取
您必須先在資料總管集區上啟用串流擷取,並定義串流擷取原則,才能使用此功能。 您可以在建立資料總管集區時啟用此功能,或將此功能新增至現有的資料總管集區。
警告
在啟用串流擷取之前,請檢閱限制。
建立新的資料總管集區時啟用串流擷取
使用 Azure Synapse Studio 或 Azure 入口網站建立新的資料總管集區時,您可以啟用串流擷取。
根據使用 Synapse Studio 建立資料總管集區中的步驟建立資料總管集區時,請在 [其他設定] 索引標籤中,選取 [串流擷取] > [已啟用]。
在現有的資料總管集區上啟用串流擷取
如果您有現有的資料總管集區,則可以使用 Azure 入口網站來啟用串流擷取。
- 在 Azure 入口網站中,移至您的資料總管集區。
- 在 [設定] 中,選取 [組態]。
- 在 [組態] 窗格中,選取 [開啟] 以啟用 [串流擷取]。
- 選取 [儲存]。
建立目標資料表並定義原則
建立資料表以接收串流擷取資料,並使用 Azure Synapse Studio 或 Azure 入口網站來定義其相關原則。
在 Synapse Studio 的左側窗格上,選取 [開發]。
在 KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。
在 [連線至] 功能表中,選取 [contosodataexplorer]。
在 [使用資料庫] 功能表中,選取 [TestDatabase]。
貼入下列命令,並選取 [執行] 以建立資料表。
.create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
將下列其中一個命令複製到 [查詢窗格],然後選取 [執行]。 這樣會在您建立的資料表或包含該資料表的資料庫上,定義串流擷取原則。
提示
在資料庫層級定義的原則套用至資料庫中所有現有和未來的資料表。
若要在您建立的資料表上定義原則,請使用:
.alter table TestTable policy streamingingestion enable
若要在包含您所建立資料表的資料庫上定義原則,請使用:
.alter database StreamingTestDb policy streamingingestion enable
建立串流擷取應用程式以將資料內嵌至資料總管集區
使用您慣用的語言建立應用程式,以將資料內嵌至資料總管集區。 針對 poolPath 變數,使用您在必要條件中記下的查詢端點。
using Kusto.Data;
using Kusto.Ingest;
using System.IO;
using Kusto.Data.Common;
namespace StreamingIngestion
{
class Program
{
static void Main(string[] args)
{
string poolPath = "https://<Poolname>.<WorkspaceName>.kusto.windows.net";
string appId = "<appId>";
string appKey = "<appKey>";
string appTenant = "<appTenant>";
string dbName = "<dbName>";
string tableName = "<tableName>";
// Create Kusto connection string with App Authentication
var csb =
new KustoConnectionStringBuilder(poolPath)
.WithAadApplicationKeyAuthentication(
applicationClientId: appId,
applicationKey: appKey,
authority: appTenant
);
// Create a disposable client that will execute the ingestion
using (IKustoIngestClient client = KustoIngestFactory.CreateStreamingIngestClient(csb))
{
// Initialize client properties
var ingestionProperties =
new KustoIngestionProperties(
databaseName: dbName,
tableName: tableName
);
// Ingest from a compressed file
var fileStream = File.Open("MyFile.gz", FileMode.Open);
// Create source options
var sourceOptions = new StreamSourceOptions()
{
CompressionType = DataSourceCompressionType.GZip,
};
// Ingest from stream
var status = client.IngestFromStreamAsync(fileStream, ingestionProperties, sourceOptions).GetAwaiter().GetResult();
}
}
}
}
在資料總管集區上停用串流擷取
警告
停用串流擷取可能需要幾小時的時間。
在資料總管集區上停用串流擷取之前,請從所有相關的資料表和資料庫卸除串流擷取原則。 移除串流擷取原則會在資料總管集區內觸發資料重新排列。 串流擷取資料會從初始儲存體移至資料行存放區中的永久儲存體 (延伸區或分區)。 視初始儲存體中的資料量而定,此流程可能需要幾秒鐘到幾個小時的時間。
卸除串流擷取原則
您可以使用 Azure Synapse Studio 或 Azure 入口網站來卸除串流擷取原則。
在 Synapse Studio 的左側窗格上,選取 [開發]。
在 KQL 指令碼下方,選取+ (新增資源) >[KQL 指令碼]。 您可以在右側窗格上命名指令碼。
在 [連線至] 功能表中,選取 [contosodataexplorer]。
在 [使用資料庫] 功能表中,選取 [TestDatabase]。
貼入下列命令,並選取 [執行] 以建立資料表。
.delete table TestTable policy streamingingestion
在 Azure 入口網站中,移至您的資料總管集區。
在 [設定] 中,選取 [組態]。
在 [組態] 窗格中,選取 [開啟] 以啟用 [串流擷取]。
選取 [儲存]。
限制
- 如果資料庫本身或其任何資料表已定義並啟用串流擷取原則,則資料庫不支援資料庫指標。
- 必須預先建立資料對應,才能在串流擷取中使用。 個別的串流擷取要求不負責內嵌資料對應。
- 無法在串流擷取資料上設定延伸區標記。
- 更新原則。 更新原則只能參考來源資料表中新內嵌的資料,而不是資料庫中的任何其他資料或資料表。
- 如果在資料庫的任何資料表上使用串流擷取,此資料庫就不能當做追隨資料庫的領導者,也不能當做 Azure Synapse Analytics Data Share 的資料提供者。