串流擷取至具體化視觀表 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

串流擷取至具體化視觀表

串流擷取提供低延遲、高速的資料擷取功能,從 Amazon Kinesis Data Streams 或 Managed Stre aming for Apache Kafka 串流至 Amazon Redshift 佈建或 Amazon Redshift 無伺服器資料庫。資料會落在針對此目的設定的 Redshift 具體化視觀表中。這樣可以快速存取外部資料。串流擷取可降低資料存取時間並降低儲存成本。您可以使用少量命令集合,為您的 Amazon Redshift 叢集或 Amazon Redshift 無伺服器工作群組進行設定。SQL設定完成後,每個具體化檢視重新整理每秒可擷取數百 MB 的資料。

資料如何從串流服務流向 Redshift

它有助於瞭解串流擷取的運作方式,以及在程序中使用的資料庫物件。資料會直接從資料串流提供者流向 Amazon Redshift 佈建的叢集,或是流向 Amazon Redshift 無伺服器工作群組。沒有臨時登陸區域,例如 Amazon S3 存儲桶。佈建的叢集或工作群組是串流用戶。在 Redshift 資料庫中,從串流讀取的資料會落在具體化視圖中。數據在到達時進行處理。例如,JSON值可以使用來消耗並對應至具體化視觀表的資料欄SQL。重新整理具體化視觀表時,Redshift 會耗用已配置 Kinesis 資料碎片或 Kafka 分割區的資料,直到視圖與串流一起更新為止。

Amazon Redshift 串流擷取的使用案例涉及持續產生的資料,而且必須在短時間或延遲內處理資料。這通常稱為近乎即時的分析。來源可以包括 IT 裝置、系統遙測裝置,以及來自忙碌網站或應用程式的點選串流資料。

提升效能的資料剖析最佳做法

設定串流擷取時,您可以選擇如何剖析內送資料。實踐可以包括在數據到達時執行業務邏輯或格式化。我們建議採用下列最佳作法,以避免錯誤或資料遺失。這些源自內部測試,並幫助客戶遇到麻煩的配置和解析問題。

  • 從串流資料擷取值 — 如果您在具體化視觀表定義中使用 JSONEXTRACTPATH_ _ _ TEXT 函數來剖析或粉碎串流JSON,可能會大幅影響效能和延遲。為了解釋,對於使用 JSON _ _ EXTRACT PATH _ 提取的每個列TEXT,傳入JSON被重新解析。在此之後,會進行資料類型轉換、篩選和商務邏輯計算。這表示,例如,如果您從JSON資料擷取 10 個資料行,則會剖析每JSON筆記錄 10 次,其中包含額外的邏輯。這會導致更高的擷取延遲。我們建議的另一種方法是使用 JSON_ PARSE 函數將JSON記錄轉換為 Redshift 的SUPER數據類型。串流資料落入具體化視觀表後,請使用 PartiQL 從資料SUPER表示中擷取個別字串。JSON有關詳情,請參閱查詢半結構化資料。

    此外,請注意 JSON _ _ EXTRACT PATH _ TEXT 的資料大小上限為 64KB。因此,如果任何JSON記錄大於 64KB,則使用 JSON _ _ EXTRACT PATH _ 處理會TEXT導致錯誤。

  • Amazon Kinesis Data Streams 串流或 Amazon MSK 主題對應至多個具體化視觀表 — 我們不建議建立多個具體化視觀表來擷取單一串流或主題的資料。這是因為每個具體化視觀表會在 Kafka 主題中為 Kinesis Data Streams 或分割區中的每個碎片建立一個用戶。這可能會導致節流或超過串流或主題的輸送量。這也可能導致更高的成本,因為您多次導入相同的數據。設定串流擷取時,建議您為每個串流或主題建立一個具體化視觀表。

    如果您的使用案例要求將一個串KDS流或MSK主題的資料導入多個具體化視圖,請在執行此操作之前,先查閱AWS 大數據部落格,特別是使用 Amazon Redshift 串流擷取實作 near-real-time 分析的最佳實務。MSK

串流擷取行為和資料類型

下表說明各種資料類型的技術行為詳細資料和大小限制。建議您在設定用於串流擷取的具體化視觀表之前,先熟悉這些內容。

功能或行為 描述
Kafka 主題長度限制

Kafka 主題的名稱不得超過 128 個字元 *不包括引號)。如需詳細資訊,請參閱名稱和識別碼

累加式重新整理和JOINs具體化視觀表

具體化視觀表必須是可以增量維護的。Kinesis 或 Amazon 無法完全重新計算,MSK因為預設情況下,它們不會保留過去 24 小時或 7 天的串流或主題歷史記錄。您可以在 Kinesis 或 Amazon MSK 中設定較長的資料保留期。但是,這可能會導致更多的維護和成本。此外,JOINs在 Kinesis 串流或 Amazon MSK 主題上建立的具體化視觀表目前不支援。在串流或主題上建立具體化視觀表之後,您可以建立另一個具體化視觀表,將串流具體化視觀表結合至其他具體化視觀表、資料表或檢視。

如需詳細資訊,請參閱REFRESHMATERIALIZEDVIEW

記錄剖析

Amazon Redshift 串流擷取不支援剖析由 Kinesis 製作者程式庫彙總的記錄 (KPL關鍵概念- 彙總)。彙總記錄會被擷取,但會儲存為二進制協定緩衝區資料。(如需詳細資訊,請參閱 協定緩衝區)。視您將資料推送至 Kinesis 的方式而定,您可能需要關閉此功能。

解壓縮

VARBYTE不支持解壓縮。因此,包含壓縮資料的記錄無法在 Redshift 中查詢。將資料新增至 Kinesis 串流或 Amazon MSK 主題之前,請先解壓縮資料。

記錄大小上限

Amazon Redshift 可以從 Kinesis 或亞馬遜導入的任何記錄字段的最大大小略小於 1MB。MSK以下幾點詳細說明了此行為:

  • 最大VARBYTE長度 — 對於串流擷取,此VARBYTE類型支援最大長度為 1,024,000 位元組的資料。Kinesis 將有效載荷限制為 1 MB。

  • 訊息限制 — Amazon 的預設MSK組態會將訊息限制為 1 MB。此外,如果訊息包含標頭,則資料量限制為 1,048,470 個位元組。使用預設設定時,擷取沒有問題。但是,您可以將卡夫卡(以及 AmazonMSK)的最大消息大小更改為更大的值。在這種情況下,它可能是一個卡夫卡記錄的鍵/值字段,或標題,超過大小限制。這些記錄可能會導致錯誤,並且不會被擷取。

注意

即使 Amazon Redshift 支援資料類型的大小上限為 16 MBMSK,但 Amazon Redshift 也支援從 Kinesis 或亞馬遜進行串流擷取的最大大小為 1,024,000 位元組。VARBYTE

錯誤記錄

在因為資料大小超過上限而無法將記錄擷取至 Redshift 的每種情況下,都會略過該記錄。在這種情況下,具體化視觀表重新整理仍然會成功,並且每個錯誤記錄的區段都會寫入 SYS_STREAM_SCAN_ERRORS 系統表。但不會略過商務邏輯所產生的錯誤,例如計算中的錯誤或類型轉換所產生的錯誤。在將邏輯新增至具體化視觀表定義之前,請仔細測試邏輯。

Amazon MSK 多VPC私有連接

Redshift 串流擷取目前不支援 Amazon MSK 多VPC私有連線。或者,您可以使用VPC對等互連,透過中央集線器連線VPCsVPCs或AWS Transit Gateway連線內部部署網路。這兩種方式都可以讓 Redshift 與 Amazon 叢集通訊,或與另一個MSK叢集中的 Amazon MSK 無伺服器進行通訊。VPC

自動刷新使用和激活

具體化視觀表的自動重新整理查詢會被視為任何其他使用者工作負載。自動重新整理會在資料到達時從串流載入資料。

您可以針對為串流擷取建立的具體化視觀表明確開啟自動重新整理。若要這樣做,請在具體化視觀表定義中指定 AUTO REFRESH。預設為手動重新整理。若要為現有具體化視觀表指定自動重新整理以進行串流擷取,您可以執行 ALTER MATERIALIZED VIEW 以將其開啟。如需詳細資訊,請參閱CREATEMATERIALIZEDVIEWALTERMATERIALIZEDVIEW

串流擷取和 Amazon Redshift 無伺服器

適用於已佈建叢集上 Amazon Redshift 串流擷取的設定和組態指示也適用於 Amazon Redshift 無伺服器上的串流擷取。指定必要的層級以支援透過 auto 重新整理和其他工作負載RPUs進行串流擷取。如需詳細資訊,請參閱 Amazon Redshift Serverless 的計費

Amazon 紅移節點位於與亞馬遜MSK叢集不同的可用區域

當您設定串流擷取時,如果 Amazon 啟用了機架感知功能,Amazon Redshift 會嘗試以相同的可用性連線到 Amazon MSK 叢集。MSK如果所有節點與 Amazon Redshift 叢集位於不同的可用區域,則可能會產生跨可用區域資料傳輸費用。為避免這種情況,請將至少一個 Amazon MSK 代理程式叢集節點保留在與 Redshift 佈建的叢集或工作群組相同的可用區中。

刷新開始位置

建立具體化視觀表後,其初始重新整理會TRIM_HORIZON從 Kinesis 串流開始,或從 Amazon MSK 主題的位移 0 開始。

資料格式

支持的數據格式僅限於可以轉換的格式VARBYTE。如需詳細資訊,請參閱 VARBYTE類型VARBYTE 運算子

將記錄附加到表中

您可以執行,ALTER TABLE APPEND將資料列從現有的來源具體化視觀表附加至目標表格。這只有在具體化視觀表設定為串流擷取時才有作用。如需詳細資訊,請參閱ALTERTABLEAPPEND

跑步TRUNCATE或 DELETE

您可以使用下列方法,從用於串流擷取的具體化視觀表中移除記錄:

  • TRUNCATE— 這會刪除設定為串流擷取之具體化視觀表中的所有資料列。其不會執行資料表掃描。如需詳細資訊,請參閱TRUNCATE

  • DELETE— 這會刪除設定為串流擷取之具體化視觀表中的所有資料列。如需詳細資訊,請參閱DELETE