BigQuery コネクタ

BigQuery コネクタを使用すると、BigQueryに保存されているデータのクエリを実行できます。これにより、BigQueryとHiveなどの異なるシステム間でデータを結合できます。このコネクタは、BigQuery ストレージAPIを使用してテーブルからデータを読み取ります。

ベータ版に関する免責事項

BigQuery ストレージAPIとこのコネクタはベータ版であり、変更される可能性があります。

変更には、以下が含まれる場合がありますが、これらに限定されません。

  • 型変換

  • パーティショニング

  • パラメータ

BigQuery ストレージAPI

ストレージAPIは、中間としてGoogle Cloud Storageを使用せずに、gRPC経由でBigQueryから直接並列にデータをストリーミングします。以前のエクスポートベースの読み取りフローを使用する場合と比較して、いくつかの利点があり、一般的に読み取りパフォーマンスが向上します。

直接ストリーミング

Google Cloud Storageに一時ファイルを残しません。行は、Avroワイヤ形式を使用してBigQueryサーバーから直接読み取られます。

列フィルタリング

新しいAPIでは、列フィルタリングを使用して、関心のあるデータのみを読み取ることができます。列ストアを基盤とするため、すべての列を読み取る必要がないため、効率的にデータをストリーミングできます。

動的シャード化

APIは、すべてのリーダーが完了するまで、リーダー間でレコードのバランスを再調整します。これは、すべてのマップフェーズがほぼ同時に終了することを意味します。動的シャード化がGoogle Cloud Dataflowでどのように使用されているかについては、このブログ記事を参照してください。

要件

BigQuery ストレージ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プロジェクトを指す複数のカタログを作成する必要があります。たとえば、営業用と分析用の2つのGCPプロジェクトがある場合、etc/catalogsales.propertiesanalytics.propertiesという名前の2つのプロパティファイルを作成し、両方でconnector.name=bigqueryを設定しますが、project-idは異なるものにします。これにより、それぞれsalesanalyticsという2つのカタログが作成されます。

パーティショニングの設定

デフォルトでは、コネクタは読み取られるテーブル(フィルタリング前)の400MBごとに1つのパーティションを作成します。これは、BigQueryストレージAPIでサポートされている最大リーダー数にほぼ対応するはずです。これは、bigquery.parallelismプロパティで明示的に設定できます。BigQueryは、サーバーの制約に基づいてパーティション数を制限する場合があります。

ビューからの読み取り

このコネクタは、BigQueryビューからの読み取りを予備的にサポートしています。いくつかの注意点があります。

  • BigQueryビューはデフォルトではマテリアライズされません。つまり、コネクタはビューを読み取る前にマテリアライズする必要があります。このプロセスは、読み取りパフォーマンスに影響します。

  • マテリアライズプロセスは、BigQueryの請求額に追加コストがかかる可能性もあります。

  • デフォルトでは、マテリアライズされたビューは同じプロジェクトとデータセットに作成されます。これらは、オプションのbigquery.view-materialization-projectおよびbigquery.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)

RECORD

ROW

STRING

VARCHAR

TIME

TIME_WITH_TIME_ZONE

タイムゾーンはUTC

TIMESTAMP

TIMESTAMP_WITH_TIME_ZONE

タイムゾーンはUTC

FAQ

ストレージAPIの価格設定について

BigQueryの価格設定に関するドキュメントを参照してください。