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/catalog
にsales.properties
とanalytics.properties
という名前の2つのプロパティファイルを作成し、両方でconnector.name=bigquery
を設定しますが、project-id
は異なるものにします。これにより、それぞれsales
とanalytics
という2つのカタログが作成されます。
パーティショニングの設定¶
デフォルトでは、コネクタは読み取られるテーブル(フィルタリング前)の400MBごとに1つのパーティションを作成します。これは、BigQueryストレージAPIでサポートされている最大リーダー数にほぼ対応するはずです。これは、bigquery.parallelism
プロパティで明示的に設定できます。BigQueryは、サーバーの制約に基づいてパーティション数を制限する場合があります。
ビューからの読み取り¶
このコネクタは、BigQueryビューからの読み取りを予備的にサポートしています。いくつかの注意点があります。
BigQueryビューはデフォルトではマテリアライズされません。つまり、コネクタはビューを読み取る前にマテリアライズする必要があります。このプロセスは、読み取りパフォーマンスに影響します。
マテリアライズプロセスは、BigQueryの請求額に追加コストがかかる可能性もあります。
デフォルトでは、マテリアライズされたビューは同じプロジェクトとデータセットに作成されます。これらは、オプションの
bigquery.view-materialization-project
およびbigquery.view-materialization-dataset
プロパティでそれぞれ設定できます。サービスアカウントには、ビューをマテリアライズするために、プロジェクトとデータセットに対する書き込み権限が必要です。ビューからの読み取りは、デフォルトで無効になっています。有効にするには、
bigquery.views-enabled
設定プロパティをtrue
に設定します。
設定プロパティ¶
すべての設定プロパティはオプションです。
プロパティ |
説明 |
デフォルト |
---|---|---|
|
Google CloudプロジェクトID |
サービスアカウントから取得 |
|
Google Cloud親プロジェクトID |
サービスアカウントから取得 |
|
データを分割するパーティション数 |
エグゼキュータの数 |
|
BigQueryコネクタがビューを読み取ることを有効にします。 |
|
|
マテリアライズされたビューが作成されるプロジェクト |
ビューのプロジェクト |
|
マテリアライズされたビューが作成されるデータセット |
ビューのデータセット |
|
再試行可能なサーバーの問題が発生した場合の再試行回数 |
|
|
認証キー(Base64エンコード) |
なし。認証を参照してください。 |
|
JSON認証ファイルパス |
なし。認証を参照してください。 |
データ型¶
いくつかの例外を除いて、すべてのBigQuery型はPrestoの対応する型に直接マップされます。すべてのマッピングを以下に示します。
BigQuery |
Presto |
備考 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
タイムゾーンはUTC |
|
|
タイムゾーンはUTC |
FAQ¶
ストレージAPIの価格設定について¶
BigQueryの価格設定に関するドキュメントを参照してください。