本頁說明如何使用 Cloud Data Fusion,將資料從 Amazon Redshift 執行個體載入Google Cloud 。您可以使用 Redshift 來源連接器,將 Redshift 資料集中的資料表同步至 BigQuery 等目的地。您也可以透過這個連接器建立可設定的 SQL 查詢。
事前準備
- Cloud Data Fusion 6.9.0 以上版本支援 Redshift 來源。
設定 Redshift 來源連接器時,您可以選取現有的可重複使用連線,或是建立新的單次連線。詳情請參閱「管理連線」。重複使用連線時,請注意下列事項:
- 您不必提供憑證。
- 現有連線會提供結構定義和資料表名稱資訊,用於產生匯入查詢。
設定外掛程式
前往 Cloud Data Fusion 網頁介面,然後點選「Studio」。
確認已選取「Data Pipeline - Batch」(資料管道 - 批次),而非「Realtime」(即時)。
在「來源」選單中,點選「Redshift」。Redshift 節點會出現在管道中。如果「Studio」頁面未顯示 Redshift 來源,請從 Cloud Data Fusion Hub 部署 Redshift 來源連接器。
如要設定來源,請前往 Redshift 節點,然後按一下「Properties」(屬性)。
輸入下列屬性。如需完整清單,請參閱「屬性」。
- 輸入 Redshift 節點的標籤,例如
Redshift tables。 輸入連線詳細資料。您可以設定新的單次連線,或是現有的可重複使用連線。
新連結
如要新增與 Redshift 的一次性連線,請按照下列步驟操作:
- 請關閉「使用連線」。
- 在「JDBC driver name」(JDBC 驅動程式名稱) 欄位中,輸入驅動程式的名稱。 Redshift 支援兩種類型的 JDBC 驅動程式:CData 和 Amazon。詳情請參閱「上傳 JDBC 驅動程式」。
- 在「Host」(主機) 欄位中,輸入 Redshift 叢集的端點,例如
cdf-redshift-new.example-endpoint.eu-west-1.redshift.amazonaws.com。 - 選用:在「Port」(通訊埠) 欄位中,輸入資料庫通訊埠編號,例如
5439。 如果 Redshift 資料庫需要驗證,請執行下列步驟:
- 在「Username」(使用者名稱) 欄位中,輸入資料庫名稱。
- 在「Password」(密碼) 欄位中輸入資料庫的密碼。
- 選用:在「引數」欄位中,輸入鍵值引數。如要使用 CData 驅動程式,請提供連線引數,例如 RTK 或 OEMKey (如適用)。
- 在「Name」欄位中輸入名稱,例如
SN-PC-Source-01-01-2024。 - 在「Database」(資料庫) 欄位中輸入目標資料庫名稱,例如
datafusiondb。
可重複使用的連線
如要重複使用現有連線,請按照下列步驟操作:
- 開啟「使用連線」。
- 按一下「Browse connections」(瀏覽連線)。
按一下連線名稱。
選用步驟:如果沒有連線,且您想建立新的可重複使用連線,請按一下「新增連線」,然後參閱本頁面「新增連線」分頁中的步驟。
在「匯入查詢」欄位中,使用 Redshift 來源的結構定義和資料表名稱輸入查詢,例如
Select * from "public"."users"。選用:輸入「進階」屬性,例如邊界查詢或分割次數。如要查看所有屬性說明,請參閱「屬性」。
- 輸入 Redshift 節點的標籤,例如
選用:按一下「驗證」,並修正所有錯誤。
按一下 「關閉」。系統會儲存屬性,您可以在 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 中存取叢集:
- 取得必須連線至 Redshift 叢集的服務或機器的外部 IP 位址,例如 Proxy 伺服器 IP (請參閱「查看 IP 位址」)。Google Cloud 如果是 Managed Service for Apache Spark 叢集,請取得所有主要和子節點的 IP 位址。
為 Google Cloud 機器 IP 位址建立連入規則,將 IP 位址新增至安全群組的許可清單。
在 Wrangler 中新增連線屬性並測試:
- 在網頁介面中開啟 Cloud Data Fusion 執行個體。
- 依序點選「Wrangler」>「Add connection」(新增連線),然後為 Redshift 建立新連線。
- 輸入所有連線屬性。
- 按一下「測試連線」,並解決任何問題。
如要建立多個分割,請使用界限查詢
如要進行多次分割,請使用邊界查詢管理多節點叢集。如果您要從 Redshift 擷取資料,並在每個節點平均分配負載,請在 Redshift 來源連接器屬性中設定界限查詢。
- 在「Studio」頁面的 Cloud Data Fusion 管道中,前往 Redshift 節點,然後按一下「Properties」(屬性)。
在「進階」屬性中,指定下列項目:
- 輸入要建立的分割數。
- 輸入每個分割的擷取大小。
- 輸入要套用至多節點 Redshift 叢集的範圍查詢。
- 輸入「分割欄」欄位名稱。
舉例來說,假設您有以下用途:
- 您有一個包含 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。