BigQuery 連接器

BigQuery 連接器允許查詢儲存在 BigQuery 中的資料。這可用於在 BigQuery 和 Hive 等不同系統之間聯結資料。此連接器使用 BigQuery Storage API 從資料表讀取資料。

Beta 免責聲明

BigQuery Storage API 和此連接器目前為 Beta 版,可能會變更。

變更可能包括但不限於

  • 類型轉換

  • 分割

  • 參數

BigQuery Storage API

Storage API 使用 gRPC 直接從 BigQuery 以平行方式串流資料,而無需使用 Google Cloud Storage 作為中繼。與先前基於匯出的讀取流程相比,它具有多項優勢,通常會帶來更好的讀取效能

直接串流

它不會在 Google Cloud Storage 中留下任何暫存檔案。系統會使用 Avro 線路格式直接從 BigQuery 伺服器讀取資料列。

欄篩選

新的 API 允許欄篩選,僅讀取您感興趣的資料。以欄狀資料儲存區為後盾,它可以有效率地串流資料,而無需讀取所有欄。

動態分片

API 會在讀取器之間重新平衡記錄,直到所有讀取器都完成為止。這表示所有 Map 階段都會近乎同時完成。請參閱這篇關於 如何在 Google Cloud Dataflow 中類似地使用動態分片的部落格文章。

需求

啟用 BigQuery Storage API

請依照這些指示操作。

驗證

在 GCE/Dataproc 上,驗證會取自機器的角色。

在 GCE/Dataproc 之外,您有 3 個選項

  • 使用服務帳戶 JSON 金鑰,並按照此處所述使用 GOOGLE_APPLICATION_CREDENTIALS

  • 在目錄屬性檔案中設定 bigquery.credentials。它應包含使用 base64 編碼的 JSON 檔案內容。

  • 在目錄屬性檔案中設定 bigquery.credentials-file。它應指向 JSON 檔案的位置。

組態

若要設定 BigQuery 連接器,請在 etc/catalog 中建立目錄屬性檔案,例如名為 bigquery.properties 的檔案,以將 BigQuery 連接器掛載為 bigquery 目錄。使用下列內容建立檔案,並視您的設定情況更換連線屬性

connector.name=bigquery
bigquery.project-id=<your Google Cloud Platform project id>

多個 GCP 專案

BigQuery 連接器只能存取單一 GCP 專案。因此,如果您有多個 GCP 專案中的資料,您需要建立數個目錄,每個目錄都指向不同的 GCP 專案。例如,如果您有兩個 GCP 專案,一個用於銷售,另一個用於分析,您可以在 etc/catalog 中建立兩個名為 sales.propertiesanalytics.properties 的屬性檔案,這兩個檔案都具有 connector.name=bigquery,但具有不同的 project-id。這將建立兩個目錄,分別為 salesanalytics

設定分割

預設情況下,連接器會在要讀取的資料表中,每 400MB 建立一個分割 (在篩選之前)。這大致對應於 BigQuery Storage API 支援的最大讀取器數量。可以使用 bigquery.parallelism 屬性明確設定此值。BigQuery 可能會根據伺服器限制來限制分割數量。

從檢視讀取

連接器初步支援從 BigQuery 檢視讀取。請注意,有一些注意事項

  • BigQuery 檢視預設不會實體化,這表示連接器必須先將其實體化,才能讀取它們。此過程會影響讀取效能。

  • 實體化過程也可能會增加您的 BigQuery 帳單費用。

  • 預設情況下,實體化檢視會建立在相同的專案和資料集中。可以使用選用的 bigquery.view-materialization-projectbigquery.view-materialization-dataset 屬性分別設定這些項目。服務帳戶必須具有專案和資料集的寫入權限才能將檢視實體化。

  • 預設情況下會停用從檢視讀取。若要啟用它,請將 bigquery.views-enabled 組態屬性設定為 true

組態屬性

所有組態屬性都是選用的。

屬性

說明

預設值

bigquery.project-id

Google Cloud 專案 ID

取自服務帳戶

bigquery.parent-project

Google Cloud 父專案 ID

取自服務帳戶

bigquery.parallelism

分割資料的分割數量

執行器的數量

bigquery.views-enabled

啟用 BigQuery 連接器以讀取檢視。

false

bigquery.view-materialization-project

將建立實體化檢視的專案

檢視的專案

bigquery.view-materialization-dataset

將建立實體化檢視的資料集

檢視的資料集

bigquery.max-read-rows-retries

發生可重試的伺服器問題時的重試次數

3

bigquery.credentials-key

憑證金鑰 (base64 編碼)

無。請參閱驗證

bigquery.credentials-file

JSON 憑證檔案路徑

無。請參閱驗證

資料類型

除了少數例外,所有 BigQuery 類型都會直接對應到其 Presto 對應類型。以下是所有對應

BigQuery

Presto

附註

BOOLEAN

BOOLEAN

BYTES

VARBINARY

DATE

DATE

DATETIME

TIMESTAMP

FLOAT

DOUBLE

GEOGRAPHY

VARCHAR

知名文字 (Well-known text, WKT) 格式

INTEGER (整數)

BIGINT (長整數)

NUMERIC (數值型)

DECIMAL(38,9) (小數型,總共 38 位數,小數點後 9 位)

RECORD (記錄)

ROW (列)

STRING (字串)

VARCHAR

TIME (時間)

TIME_WITH_TIME_ZONE (含時區的時間)

時區為 UTC

TIMESTAMP

TIMESTAMP_WITH_TIME_ZONE (含時區的時間戳記)

時區為 UTC

常見問題

Storage API 的定價為何?

請參閱BigQuery 定價文件