Redshift 批次來源

本頁說明如何使用 Cloud Data Fusion,將資料從 Amazon Redshift 執行個體載入Google Cloud 。您可以使用 Redshift 來源連接器,將 Redshift 資料集中的資料表同步至 BigQuery 等目的地。您也可以透過這個連接器建立可設定的 SQL 查詢。

事前準備

  • Cloud Data Fusion 6.9.0 以上版本支援 Redshift 來源。
  • 設定 Redshift 來源連接器時,您可以選取現有的可重複使用連線,或是建立新的單次連線。詳情請參閱「管理連線」。重複使用連線時,請注意下列事項:

    • 您不必提供憑證。
    • 現有連線會提供結構定義和資料表名稱資訊,用於產生匯入查詢。

設定外掛程式

  1. 前往 Cloud Data Fusion 網頁介面,然後點選「Studio」

  2. 確認已選取「Data Pipeline - Batch」(資料管道 - 批次),而非「Realtime」(即時)

  3. 在「來源」選單中,點選「Redshift」。Redshift 節點會出現在管道中。如果「Studio」頁面未顯示 Redshift 來源,請從 Cloud Data Fusion Hub 部署 Redshift 來源連接器

  4. 如要設定來源,請前往 Redshift 節點,然後按一下「Properties」(屬性)

  5. 輸入下列屬性。如需完整清單,請參閱「屬性」。

    1. 輸入 Redshift 節點的標籤,例如 Redshift tables
    2. 輸入連線詳細資料。您可以設定新的單次連線,或是現有的可重複使用連線。

      新連結

      如要新增與 Redshift 的一次性連線,請按照下列步驟操作:

      1. 請關閉「使用連線」
      2. 在「JDBC driver name」(JDBC 驅動程式名稱) 欄位中,輸入驅動程式的名稱。 Redshift 支援兩種類型的 JDBC 驅動程式:CData 和 Amazon。詳情請參閱「上傳 JDBC 驅動程式」。
      3. 在「Host」(主機) 欄位中,輸入 Redshift 叢集的端點,例如 cdf-redshift-new.example-endpoint.eu-west-1.redshift.amazonaws.com
      4. 選用:在「Port」(通訊埠) 欄位中,輸入資料庫通訊埠編號,例如 5439
      5. 如果 Redshift 資料庫需要驗證,請執行下列步驟:

        1. 在「Username」(使用者名稱) 欄位中,輸入資料庫名稱。
        2. 在「Password」(密碼) 欄位中輸入資料庫的密碼。
        3. 選用:在「引數」欄位中,輸入鍵值引數。如要使用 CData 驅動程式,請提供連線引數,例如 RTK 或 OEMKey (如適用)。
        4. 在「Name」欄位中輸入名稱,例如 SN-PC-Source-01-01-2024
        5. 在「Database」(資料庫) 欄位中輸入目標資料庫名稱,例如 datafusiondb

      可重複使用的連線

      如要重複使用現有連線,請按照下列步驟操作:

      1. 開啟「使用連線」
      2. 按一下「Browse connections」(瀏覽連線)
      3. 按一下連線名稱。

      4. 選用步驟:如果沒有連線,且您想建立新的可重複使用連線,請按一下「新增連線」,然後參閱本頁面「新增連線」分頁中的步驟。

    3. 在「匯入查詢」欄位中,使用 Redshift 來源的結構定義和資料表名稱輸入查詢,例如 Select * from "public"."users"

    4. 選用:輸入「進階」屬性,例如邊界查詢或分割次數。如要查看所有屬性說明,請參閱「屬性」。

  6. 選用:按一下「驗證」,並修正所有錯誤。

  7. 按一下 「關閉」。系統會儲存屬性,您可以在 Cloud Data Fusion 網頁介面中繼續建構資料管道。

屬性

屬性 支援自動化巨集 必要屬性 說明
標籤 資料管道中的節點名稱。
使用連線 瀏覽來源的連線。如果已開啟「使用連線」,則不需要提供憑證。
連結 要使用的連線名稱。如果選取「使用連線」,這個欄位就會顯示。資料庫和資料表資訊是由連線提供。
JDBC 驅動程式名稱 要使用的 JDBC 驅動程式名稱。如果未選取「使用連線」,系統就會顯示這個欄位。
主機 Amazon Redshift 叢集的端點。如果未選取「使用連線」,系統會顯示這個欄位。
通訊埠 Redshift 執行的通訊埠。如果未選取「使用連線」,系統就會顯示這個欄位。
使用者名稱 用於連線至指定資料庫的使用者身分。如果未選取「使用連線」,系統會顯示這個欄位。
密碼 連線至指定資料庫時要使用的密碼。如果未選取「使用連線」,系統會顯示這個欄位。
連線引數 任意字串鍵/值組合清單,做為連線引數。 這些引數會傳遞至 JDBC 驅動程式,做為可能需要額外設定的 JDBC 驅動程式連線引數。如果未選取「使用連線」,系統會顯示這個欄位。
參照名稱 用於以不重複的方式識別這個沿襲來源,並註解中繼資料和其他服務。
資料庫 Redshift 資料庫名稱。如要選取資料,請按一下「Browse database」(瀏覽資料庫)
匯入查詢 用於從指定資料表匯入資料的 SELECT 查詢。
定界查詢 SQL 查詢,可從 splitBy 欄位傳回最小值和最大值。例如:SELECT MIN(id),MAX(id) FROM table。如果 numSplits 設為 1,則為選填。
分割資料欄 用於產生分割的欄位名稱。如果 numSplits 設為 1,則為選填。
分割次數 要產生的分割數。
大小 每個分割區一次要擷取的列數。擷取大小越大,匯入速度就越快,但記憶體用量也會增加。如未指定,則預設值為 1000

資料類型對應關係

下表列出 Redshift 資料類型及其對應的 CDAP 類型:

Redshift 資料型別 CDAP 結構定義資料類型
bigint long
boolean boolean
character string
character varying string
date date
double precision double
geometry bytes
hllsketch string
integer int
json string
numeric(精確度, 比例)/decimal(精確度, 比例) decimal
numeric,精確度為 0 string
real float
smallint int
super string
text string
time [ (p) ] 不含時區 time
time [ (p) ] with time zone string
timestamp [ (p) ] 不含時區 timestamp
timestamp [ (p) ] with time zone timestamp
varbyte byte
xml string

最佳做法

從Google Cloud連線至 Redshift 叢集時,請遵循下列最佳做法。

使用 IP 位址許可清單

如要防止未經授權的來源存取,並限制特定 IP 位址的存取權,請在 Redshift 叢集上啟用存取控管。

如果您使用 Redshift 存取權控管機制,請按照下列步驟操作,在 Cloud Data Fusion 中存取叢集:

  1. 取得必須連線至 Redshift 叢集的服務或機器的外部 IP 位址,例如 Proxy 伺服器 IP (請參閱「查看 IP 位址」)。Google Cloud 如果是 Managed Service for Apache Spark 叢集,請取得所有主要和子節點的 IP 位址。
  2. 為 Google Cloud 機器 IP 位址建立連入規則,將 IP 位址新增至安全群組的許可清單。

  3. 在 Wrangler 中新增連線屬性並測試:

    1. 在網頁介面中開啟 Cloud Data Fusion 執行個體。
    2. 依序點選「Wrangler」>「Add connection」(新增連線),然後為 Redshift 建立新連線。
    3. 輸入所有連線屬性。
    4. 按一下「測試連線」,並解決任何問題。

如要建立多個分割,請使用界限查詢

如要進行多次分割,請使用邊界查詢管理多節點叢集。如果您要從 Redshift 擷取資料,並在每個節點平均分配負載,請在 Redshift 來源連接器屬性中設定界限查詢。

  1. 在「Studio」頁面的 Cloud Data Fusion 管道中,前往 Redshift 節點,然後按一下「Properties」(屬性)
  2. 在「進階」屬性中,指定下列項目:

    1. 輸入要建立的分割數。
    2. 輸入每個分割的擷取大小。
    3. 輸入要套用至多節點 Redshift 叢集的範圍查詢。
    4. 輸入「分割欄」欄位名稱。

舉例來說,假設您有以下用途:

  • 您有一個包含 1 千萬筆記錄的資料表。
  • 其中包含名為「id」的專屬 ID 欄。
  • Redshift 叢集有 4 個節點。
  • 目標:為了充分發揮叢集的潛力,您打算產生多個分割區。如要達成此目標,請使用下列屬性設定:

    • 在「Bounding query」(邊界查詢) 欄位中,輸入下列查詢:

      SELECT MIN(id), MAX(id) FROM tableName
      

      在這項查詢中,id 是套用分割的資料欄名稱。

    • 在「Split column」(分割資料欄) 欄位中,輸入資料欄名稱 id

    • 輸入分割數和擷取大小。這些屬性相互連結,可讓您根據擷取大小計算分割,反之亦然。在本例中,請輸入下列內容。

    • 在「Number of splits」(分割數量) 欄位中輸入 40。在本例中,資料表有 1 千萬筆記錄,建立 40 個分割會導致每個分割包含 25 萬筆記錄。

    • 在「Fetch size」(擷取大小) 欄位中,輸入 250,000

後續步驟