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