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。

後續步驟