Google BigQuery データを H2O にインポート
CData JDBC Driver を使用すると、H2O などの機械学習・AI プラットフォームとのセルフサービス統合が可能になります。CData JDBC Driver for Google BigQuery を使えば、BigQuery テーブルをメモリ内の H2OFrame にインポートできます。この記事では、R または Python で JDBC ドライバーを使用して BigQuery データを H2O にインポートし、そのデータに基づいて一般化線形モデル(GLM)を作成する方法を解説します。
CData JDBC Driver は、ドライバーに組み込まれた最適化されたデータ処理により、H2O でライブ BigQuery データを操作する際に優れたパフォーマンスを発揮します。動的メタデータクエリの埋め込みにより、ネイティブの H2O データ型を使用して BigQuery データを可視化・分析できます。
JDBC ドライバーで H2O を起動する
CData JDBC Driver for BigQuery をインストールし、JAR ファイル(cdata.jdbc.bigquery.jar)と付属の LIC ファイル(cdata.jdbc.bigquery.lic)を H2O JAR ファイル(h2o.jar)が格納されているフォルダにコピーします。コピーが完了したら、JDBC ドライバーを使用して H2O を起動します:
$ java -cp "cdata.jdbc.bigquery.jar:h2o.jar" water.H2OApp
BigQuery データを H2O にインポートする
H2O が起動したら、インスタンスに接続し、import_sql_table 関数を使用して Google BigQuery データを H2O インスタンスにインポートします。
Dataset への接続
Google への認証を行い、Project プロパティと Dataset プロパティを設定することで、特定のプロジェクトと Dataset に接続できます。
Google アカウントで利用可能な Dataset とプロジェクトの情報一覧を表示するには、認証後に Datasets ビューまたは Projects ビューに対してクエリを実行してください。
Google への認証
認証には、Google アカウント、Google Apps アカウント、またはサービスアカウントを使用できます。ドメイン全体のアクセスを委任するには、サービスアカウントが必要です。認証プロセスは OAuth 2.0 認証標準に従います。認証方法の詳細については、ヘルプドキュメントの「はじめに」セクションをご覧ください。
テーブルからデータをインポートする
以下のコードサンプル(R および Python)では、import_sql_table 関数を使用して Google BigQuery テーブルを H2O クラウドにインポートします。この記事では、DVD レンタルの支払いを表すテーブルをインポートします(CSV をダウンロード)。
- connection_url - CData JDBC Driver を使用して Google BigQuery に接続するための JDBC URL。例:jdbc:bigquery:DataSetId=MyDataSetId;ProjectId=MyProjectId;InitiateOAuth=GETANDREFRESH;
- table - インポートする BigQuery テーブルの名前。
- columns - (オプション)BigQuery テーブルからインポートするカラム名のリスト。デフォルトではすべてのカラムがインポートされます。
モデルを作成する
データをインポートしたら、既存のデータをトレーニングセットとして使用して GLM を作成できます。R では、glm 関数を呼び出し、予測変数名、応答変数、トレーニングフレームを渡すだけです。Python では、H20GeneralizedLinearEstimator クラスをインポートし、同じパラメータに基づいてモデルをトレーニングします。モデルが作成・トレーニングされたら、新しいデータセットに基づいて検証や予測を行う準備が整います。
コードサンプル
R コード
R では、H2O インスタンスに接続(または新しいインスタンスを作成)し、変数を設定してテーブルをインポートします。テーブルがインポートされたら、以下のパラメータを渡して glm 関数を使用し、テーブルに GLM を適合させます:
- x - モデル構築に使用する予測変数を含むベクトル。
- y - データ内の応答変数の名前。
- training_frame - トレーニングデータフレームの ID。
GLM を適合させたら、モデルを表示します。
library(h2o) h2o.init() h2o.init(strict_version_check = FALSE) connection_url <- "jdbc:bigquery:DataSetId=MyDataSetId;ProjectId=MyProjectId;InitiateOAuth=GETANDREFRESH;" table <- "payment" my_table <- h2o.import_sql_table(connection_url, table, username = "", password = "") # X は応答変数のインデックス pred_names <- names(my_table)[-X] my_table_glm <- h2o.glm(x = pred_names, y = "amount", training_frame = my_table)
Python コード
Python では、H2O インスタンスに接続(または新しいインスタンスを作成)し、H2OGeneralizedLinearEstimator クラスをインポートして、変数を設定し、テーブルをインポートします。テーブルがインポートされたら、GLM を作成してモデルを train します。以下のパラメータを渡します(デフォルトでは、train メソッドはトレーニングフレーム内の応答変数を除くすべてのカラムを予測変数として使用します):
- y - データ内の応答変数の名前。
- training_frame - トレーニングデータフレームの ID。
import h2o h2o.init() h2o.init(strict_version_check = False) from h2o.estimators.glm import H2OGeneralizedLinearEstimator connection_url = "jdbc:googlebigquery:DataSetId=MyDataSetId;ProjectId=MyProjectId;InitiateOAuth=GETANDREFRESH;" table = "payment" my_table = h2o.import_sql_table(connection_url, table, username = "", password = "") my_glm = H2OGeneralizedLinearEstimator(model_id='my_table_glm') my_glm.train(y = 'amount', training_frame = my_table)
コードを実行すると、"payment" テーブルに基づき、"amount" カラムを応答変数として使用した新しいモデルが H2O に作成されます。

新しい GLM を使って、H2O で "payment" テーブルに基づく新しいデータの検証や予測を行う準備が整いました。これにより、機械学習や AI アルゴリズムを活用して分析を推進し、ビジネスを促進する実用的なインサイトを生成できます。