您可以使用 Cloud Storage 批次來源外掛程式,從 Cloud Storage bucket 讀取資料,並匯入 Cloud Data Fusion 進行後續處理和轉換。可讓您載入多種檔案格式的資料,包括:
- 結構化:CSV、Avro、Parquet、ORC
- 半結構化:JSON、XML
- 其他:文字、二進位
事前準備
Cloud Data Fusion 通常有兩個服務帳戶:
- 設計階段服務帳戶: Cloud Data Fusion API 服務代理人
- 執行階段服務帳戶: Compute Engine 服務帳戶
使用 Cloud Storage 批次來源外掛程式前,請將下列角色或權限授予每個服務帳戶。
Cloud Data Fusion API 服務代理
這個服務帳戶已具備所有必要權限,因此不需要新增其他權限。
Compute Engine 服務帳戶
在 Google Cloud 專案中,將下列 IAM 角色或權限授予 Compute Engine 服務帳戶:
- Storage 舊版 bucket 讀取者 (
roles/storage.legacyBucketReader)。這個預先定義的角色包含必要的storage.buckets.get權限。 Storage 物件檢視者 (
roles/storage.legacyBucketReader)。這個預先定義的角色包含下列必要權限:storage.objects.getstorage.objects.list
設定外掛程式
- 前往 Cloud Data Fusion 網頁介面,然後點選「Studio」。
- 確認已選取「Data Pipeline - Batch」(資料管道 - 批次),而非「Realtime」(即時)。
- 在「來源」選單中,點選「GCS」。Cloud Storage 節點會顯示在管道中。
- 如要設定來源,請前往 Cloud Storage 節點,然後按一下「Properties」(屬性)。
輸入下列屬性。如需完整清單,請參閱「屬性」。
- 輸入 Cloud Storage 節點的標籤,例如
Cloud Storage tables。 輸入連線詳細資料。您可以設定新的單次連線,或是現有的可重複使用連線。
新連結
如要新增與 Cloud Storage 的一次性連線,請按照下列步驟操作:
- 請關閉「使用連線」。
- 保留「專案 ID」欄位中的自動偵測值。
在「服務帳戶類型」欄位中,將值保留為「檔案路徑」,並將「服務帳戶檔案路徑」保留為自動偵測。
可重複使用的連線
如要重複使用現有連線,請按照下列步驟操作:
- 開啟「使用連線」。
- 按一下「Browse connections」(瀏覽連線)。
按一下連線名稱,例如「Cloud Storage Default」。
選用:如果沒有連線,且您想建立新的可重複使用連線,請按一下「新增連線」,然後參閱本頁面「新連線」分頁中的步驟。
在「Reference name」(參照名稱) 欄位中,輸入要用於沿襲的名稱,例如
data-fusion-gcs-campaign。在「Path」(路徑) 欄位中,輸入要讀取的路徑,例如
gs://BUCKET_PATH。在「格式」欄位中,選取要讀取資料的下列其中一種檔案格式:
- avro
- blob (blob 格式需要包含名為 body 的欄位,且類型為位元組的結構定義)
- csv
- delimited
- json
- parquet
- text (文字格式需要包含名為 body 的欄位,且類型為字串的結構定義)
- tsv
- 您在環境中部署的任何格式外掛程式名稱
選用:如要測試連線,請按一下「取得架構」。
選用:在「樣本大小」欄位中,輸入要檢查所選資料類型的最大列數,例如
1000。選用:在「Override」(覆寫) 欄位中,輸入要略過的資料欄名稱和各自的資料類型。
選用:輸入進階屬性,例如最小分割大小或規則運算式路徑篩選器 (請參閱「屬性」)。
選用:在「Temporary bucket name」(暫時 bucket 名稱) 欄位中,輸入 Cloud Storage bucket 的名稱。
- 輸入 Cloud Storage 節點的標籤,例如
選用:按一下「驗證」,並修正所有錯誤。
按一下「關閉」。系統會儲存屬性,您可以在 Cloud Data Fusion Studio 中繼續建構資料管道。
屬性
| 屬性 | 含巨集功能 | 必要屬性 | 說明 |
|---|---|---|---|
| 標籤 | 否 | 是 | 資料管道中的節點名稱。 |
| 使用連線 | 否 | 否 | 瀏覽可重複使用的來源連線。如要進一步瞭解如何新增、匯入及編輯瀏覽連線時顯示的連線,請參閱「管理連線」。 |
| 連結 | 是 | 是 | 如果開啟「使用連線」,這個欄位會顯示您選取的重複使用連線名稱。 |
| 專案 ID | 是 | 否 | 僅在關閉「使用連線」時使用。專案的全域專屬 ID。 預設值為 auto-detect。 |
| 服務帳戶類型 | 是 | 否 | 選取下列其中一個選項:
|
| 服務帳戶檔案路徑 | 是 | 否 | 只有當服務帳戶類型值為「檔案路徑」時,才會使用這個值。用於授權的服務帳戶金鑰在本機檔案系統中的路徑。如果工作是在 Managed Service for Apache Spark 叢集上執行,
請將值設為自動偵測。如果工作在其他類型的叢集上執行,則叢集中的每個節點都必須有該檔案。 預設值為 auto-detect。 |
| 服務帳戶 JSON | 是 | 否 | 僅在「服務帳戶類型」值為 JSON 時使用。 服務帳戶的 JSON 檔案內容。 |
| 參照名稱 | 否 | 是 | 這個名稱可供其他服務 (例如沿襲和註解中繼資料) 專屬識別這個來源。 |
| 路徑 | 是 | 是 | 要讀取檔案的路徑。如果指定目錄,請以反斜線 (/) 終止路徑。例如:gs://bucket/path/to/directory/。如要比對檔案名稱模式,可以使用星號 (*) 做為萬用字元。如果找不到或沒有相符的檔案,管道就會失敗。 |
| 格式 | 否 | 是 | 要讀取的資料格式。格式必須為下列其中一種:
|
| 樣本大小 | 是 | 否 | 系統會調查的列數上限,以自動偵測資料類型。預設值為 1000。 |
| 覆寫 | 是 | 否 | 系統會略過自動偵測資料類型,並列出對應資料的資料欄。 |
| 分隔符號 | 是 | 否 | 格式為「分隔」時使用的分隔符號。其他格式會忽略這項屬性。 |
| 啟用引用值 | 是 | 否 | 是否將引號之間的內容視為值。這個屬性僅適用於 csv、tsv 或分隔格式。舉例來說,如果這項屬性設為 true,下列輸出內容會包含兩個欄位:1, "a, b, c"。第一個欄位的值為 1。第二個具有
a, b, c。引號字元會遭到截斷。換行分隔符號不得位於引號內。外掛程式會假設引號已正確括住,例如 "a, b, c"。如果沒有關閉引號 ("a,b,c,),就會發生錯誤。預設值為 False。 |
| 使用第一列做為標題 | 是 | 否 | 是否將每個檔案的第一行做為資料欄標題。支援的格式包括文字、CSV、TSV 和分隔。 預設值為 False。 |
| 最低分割大小 | 是 | 否 | 每個輸入分區的最小大小 (以位元組為單位)。較小的分割區會提高平行處理層級,但需要更多資源和額外負擔。 如果「格式」值為 blob,您就無法分割資料。 |
| 分割大小上限 | 是 | 否 | 每個輸入分割區的大小上限 (以位元組為單位)。較小的分割區會提高平行處理層級,但需要更多資源和額外負擔。 如果「格式」值為 blob,您就無法分割資料。預設值為 128 MB。 |
| 規則運算式路徑篩選器 | 是 | 否 | 檔案路徑必須符合的規則運算式,才能納入輸入內容。系統會比較完整路徑,而不只是檔案名稱。如果未提供任何檔案,系統就不會篩選檔案。如要進一步瞭解規則運算式語法,請參閱模式。 |
| 路徑欄位 | 是 | 否 | 輸出欄位,用於放置記錄讀取來源檔案的路徑。如未指定,輸出記錄中不會包含路徑。如果指定這個值,則欄位必須以字串形式存在於輸出結構定義中。 |
| 僅限路徑檔案名稱 | 是 | 否 | 如果已設定「路徑欄位」屬性,請只使用檔案名稱,不要使用路徑的 URI。 預設值為 False。 |
| 以遞迴方式讀取檔案 | 是 | 否 | 是否要從路徑以遞迴方式讀取檔案。 預設值為 False。 |
| 允許輸入空白內容 | 是 | 否 | 是否允許輸入路徑不含資料。如果設為 False,外掛程式會在沒有資料可讀取時發生錯誤。設為 True 時,系統不會擲回任何錯誤,且讀取的記錄為零。 預設值為 False。 |
| 資料檔案已加密 | 是 | 否 | 檔案是否經過加密。詳情請參閱「資料檔案加密」。 預設值為 False。 |
| 加密中繼資料檔案後置字串 | 是 | 否 | 加密中繼資料檔案的檔案名稱後置字串。 預設值為 metadata。 |
| 檔案系統屬性 | 是 | 否 | 讀取資料時,要搭配 InputFormat 使用的額外屬性。 |
| 檔案編碼 | 是 | 否 | 要讀取檔案的字元編碼。 預設值為 UTF-8。 |
| 輸出內容結構定義 | 是 | 否 | 如果設定了「路徑欄位」屬性,則必須以字串形式出現在結構定義中。 |
資料檔案加密
本節說明「資料檔案加密」屬性。如果設為 true,系統會使用 Tink 程式庫提供的串流 AEAD 解密檔案。每個資料檔案都必須隨附中繼資料檔案,其中包含密碼資訊。舉例來說,gs://BUCKET/PATH_TO_DIRECTORY/file1.csv.enc
的加密資料檔案必須有 gs://BUCKET/
PATH_TO_DIRECTORY/file1.csv.enc.metadata 的中繼資料檔案。中繼資料檔案包含具有下列屬性的 JSON 物件:
| 屬性 | 說明 |
|---|---|
kms |
用來加密資料加密金鑰的 Cloud Key Management Service URI。 |
aad |
加密時使用的 Base64 編碼額外驗證資料。 |
key set |
JSON 物件,代表 Tink 程式庫中序列化的金鑰組資訊。 |
範例
/* Counting example */ { "kms": "gcp-kms://projects/my-key-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/mykey", "aad": "73iT4SUJBM24umXecCCf3A==", "keyset": { "keysetInfo": { "primaryKeyId": 602257784, "keyInfo": [{ "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmHkdfStreamingKey", "outputPrefixType": "RAW", "keyId": 602257784, "status": "ENABLED" }] }, "encryptedKeyset": "CiQAz5HH+nUA0Zuqnz4LCnBEVTHS72s/zwjpcnAMIPGpW6kxLggSrAEAcJKHmXeg8kfJ3GD4GuFeWDZzgGn3tfolk6Yf5d7rxKxDEChIMWJWGhWlDHbBW5B9HqWfKx2nQWSC+zjM8FLefVtPYrdJ8n6Eg8ksAnSyXmhN5LoIj6az3XBugtXvCCotQHrBuyoDY+j5ZH9J4tm/bzrLEjCdWAc+oAlhsUAV77jZhowJr6EBiyVuRVfcwLwiscWkQ9J7jjHc7ih9HKfnqAZmQ6iWP36OMrEn" } }
版本資訊
後續步驟
- 進一步瞭解 Cloud Data Fusion 中的外掛程式。