Java Database Connectivity (JDBC) を使用して、アプリケーションから Lindorm Distributed Processing System (LDPS) に接続し、Spark SQL クエリ、分析処理、およびデータ生成ワークロードを実行します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
LindormTable が有効化された Lindorm インスタンス。詳細については、「インスタンスの作成」をご参照ください。
該当インスタンスに対して LDPS が有効化されていること。詳細については、「LDPS の有効化と構成の変更」をご参照ください。
Java IDE に JDK 1.8 以降がインストール済みであること
JDBC エンドポイントの取得
JDBC エンドポイントは、以下の形式で指定します。
jdbc:hive2://<host>:10009/;?token=<your-token>ご利用のインスタンスのエンドポイントを確認するには、「エンドポイントの表示」をご参照ください。
Beeline を使用した接続
Beeline は、Spark リリースパッケージに同梱されるインタラクティブな CLI クライアントです。アプリケーションコードを記述せずに、LDPS に対して直接 SQL ステートメントを実行できます。
Spark リリースパッケージをダウンロードし、解凍します。
SPARK_HOME環境変数を解凍後のディレクトリに設定します。export SPARK_HOME=/path/to/spark/$SPARK_HOME/conf/beeline.confを以下のパラメーターで構成します。パラメーター 説明 endpointLDPS の JDBC エンドポイント userLindorm ワイドテーブル用のユーザー名 passwordLindorm ワイドテーブル用のパスワード shareResource複数のインタラクティブセッションが Spark リソースを共有するかどうか。デフォルト値: trueBeeline を起動します。
/bin/beelineインタラクティブセッション内で、LDPS のデータソースに対して SQL ステートメントを実行します。
LDPS は複数のデータソースタイプをサポートしています。詳細については、「注意事項」をご参照ください。
例:Hive Metastore を使用したテーブルの作成とクエリ実行
Hive Metastore を有効化した後、以下のステートメントを実行してテーブルを作成し、データを挿入・クエリします。設定手順については、「Lindorm におけるメタデータ管理のための Hive Metastore の使用」をご参照ください。
CREATE TABLE test (id INT, name STRING);
INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison');
SELECT id, name FROM test;Java を使用した接続
すべての Java サンプルでは、org.apache.hive.jdbc.HiveDriver ドライバーと DriverManager.getConnection() API を使用します。
プロジェクトに JDBC ドライバーの依存関係を追加します。Maven (
pom.xml):<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.8</version> </dependency>LDPS に接続してクエリを実行します。
import java.sql.*; public class App { public static void main(String[] args) throws Exception { // Hive JDBC ドライバーを登録 Class.forName("org.apache.hive.jdbc.HiveDriver"); // ご利用の LDPS JDBC エンドポイントに置き換えます String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(endpoint, user, password); Statement stmt = con.createStatement(); // クエリを実行して結果を出力 ResultSet res = stmt.executeQuery("SELECT * FROM test"); while (res.next()) { System.out.println(res.getString(1)); } } }(任意)セミコロンで区切って、エンドポイント URL に Spark ジョブパラメーターを追加できます。
String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****" + ";spark.dynamicAllocation.minExecutors=3" + ";spark.sql.adaptive.enabled=false";
Python を使用した接続
すべての Python サンプルでは、Python DB-API 2.0 インターフェイスと Hive JDBC ドライバーを橋渡しする JayDeBeApi ライブラリを使用します。
Spark リリースパッケージをダウンロードし、解凍します。
環境変数を設定します。
export SPARK_HOME=/path/to/dir/ export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*JayDeBeApi をインストールします。
pip install JayDeBeApiLDPS に接続してクエリを実行します。
import jaydebeapi driver = 'org.apache.hive.jdbc.HiveDriver' endpoint = 'jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****' jar_path = '/path/to/sparkhome/jars/hive-jdbc-****.jar' user = '****' password = '****' conn = jaydebeapi.connect(driver, endpoint, [user, password], [jar_path]) cursor = conn.cursor() cursor.execute("select 1") results = cursor.fetchall() cursor.close() conn.close()(任意)エンドポイント文字列に Spark ジョブパラメーターを追加できます。
endpoint = ( "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****" ";spark.dynamicAllocation.minExecutors=3" ";spark.sql.adaptive.enabled=false" )
次のステップ
注意事項 — LDPS でサポートされるデータソースおよび既知の制限事項
Lindorm におけるメタデータ管理のための Hive Metastore の使用 — Beeline および JDBC クエリ向けのテーブルメタデータ管理
LDPS の有効化と構成の変更 — LDPS クラスター設定の調整