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. 確認已選取「資料管道 - 批次」 (而非「即時」)。

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

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

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

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

      新連結

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

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

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

      可重複使用的連線

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

      1. 開啟「Use connection」
      2. 按一下「瀏覽連線」
      3. 按一下連線名稱。

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

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

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

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

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

屬性

屬性 支援自動化巨集 必要屬性 說明
標籤 資料管道中的節點名稱。
使用連線 瀏覽來源連線。如果已開啟「使用連線」,您就不需要提供憑證。
連線 要使用的連線名稱。如果選取「Use connection」,這個欄位就會顯示。資料庫和資料表資訊是由連線提供。
JDBC 驅動程式名稱 要使用的 JDBC 驅動程式名稱。如果未選取「使用連線」,系統就會顯示這個欄位。
主機 Amazon Redshift 叢集的端點。如果未選取「使用連線」,就會顯示這個欄位。
Port (通訊埠) Redshift 執行的通訊埠。如果未選取「使用連線」,系統就會顯示這個欄位。
使用者名稱 連線至指定資料庫的使用者身分。如果未選取「使用連線」,系統就會顯示這個欄位。
密碼 連線至指定資料庫時要使用的密碼。如果未選取「使用連線」,系統就會顯示這個欄位。
連線引數 任意字串鍵/值組合清單,做為連線引數。這些引數會傳遞至 JDBC 驅動程式,做為 JDBC 驅動程式可能需要額外設定的連線引數。如果未選取「使用連線」,系統就會顯示這個欄位。
參照名稱 用於識別此來源的唯一值,用於追溯來源、標註中繼資料和其他服務。
資料庫 Redshift 資料庫名稱。如要選取資料,請按一下「瀏覽資料庫」
匯入查詢 用於從指定資料表匯入資料的 SELECT 查詢。
邊界查詢 會從 splitBy 欄位傳回最小值和最大值的 SQL 查詢。例如 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
精確度為 0 的 numeric string
real float
smallint int
super string
text string
time [ (p) ] 不含時區 time
time [ (p) ] 含時區 string
timestamp [ (p) ] 不含時區 timestamp
timestamp [ (p) ] 含時區 timestamp
varbyte byte
xml string

最佳做法

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

使用 IP 位址許可清單

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

如果您使用 Redshift 存取權控管功能,請按照下列步驟存取 Cloud Data Fusion 中的叢集:

  1. 取得必須連線至 Redshift 叢集的服務或機器 (例如 Proxy Server IP) 的外部 IP 位址 (請參閱「查看 IP 位址」)。Google Cloud 針對 Dataproc 叢集,取得所有主要節點和子節點的 IP 位址。
  2. 為 Google Cloud 機器 IP 位址建立傳入規則,將 IP 位址加入安全性群組的許可清單。

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

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

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

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

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

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

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

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

    • 在「Bounding query」欄位中輸入下列查詢:

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

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

    • 在「分割欄」欄位中輸入欄名稱 id

    • 輸入分割數量和擷取大小。這些屬性彼此相連,可讓您根據擷取大小或其他方式計算分割作業。在本例中,請輸入以下內容。

    • 在「Number of splits」(分割次數) 欄位中輸入 40。在這個範例中,資料表有 1000 萬筆記錄,因此建立 40 個分割結果,每個分割結果包含 250,000 筆記錄。

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

後續步驟