Java Database Connectivity (JDBC) を使用して Lindorm Distributed Processing System (LDPS) サービスにアクセスし、Spark SQL でデータのクエリ、分析、生成を実行できます。
前提条件
-
Lindorm インスタンスを作成し、LindormTable を有効化していること。 詳細については、「インスタンスの作成」をご参照ください。
-
LDPS サービスを有効化していること。 詳細については、「LDPS の有効化」をご参照ください。
-
Java 開発環境がインストール済みであること。 JDK 1.8 以降が必要です。
JDBC エンドポイント
LDPS の JDBC エンドポイントと JAR アドレスを表示するには、インスタンス詳細ページで [データベース接続] をクリックし、[コンピューティングエンジン] タブをクリックします。 詳細については、「エンドポイントの表示」をご参照ください。 LDPS は、VPC とパブリックネットワーク接続の両方に jdbc:hive2://<host>:<port> 形式の JDBC エンドポイントを提供します。
Beeline による JDBC 接続
-
Spark リリースパッケージをダウンロードします。
-
Spark リリースパッケージを解凍します。
-
SPARK_HOME 環境変数を解凍後のパッケージのディレクトリに設定します。
export SPARK_HOME=/path/to/spark/; -
$SPARK_HOME/conf/beeline.confファイルを設定します。-
endpoint:LDPS の JDBC エンドポイント。
-
user:LindormTable へのアクセスに使用するユーザー名。
-
password:指定されたユーザーのパスワード。
-
shareResource:複数のインタラクティブセッションで Spark リソースを共有するかどうかを指定します。 デフォルト値は true です。
説明追加のジョブパラメーターを設定するには、それらを beeline.conf ファイルに追加します。 各行には
key=value形式で 1 つのジョブパラメーターのみを記述できます。 例:spark.dynamicAllocation.minExecutors=3 -
-
$SPARK_HOME/bin/beelineコマンドを実行し、インタラクティブセッションで SQL 文を入力します。LDPS は様々なデータソースにアクセスできます。 詳細については、「使用上の注意」をご参照ください。
たとえば、Lindorm の Hive メタストアを有効化した後、次のステートメントでテーブルを作成し、読み書き操作を実行できます。 サービスを有効化する方法の詳細については、「Hive メタストアの有効化」をご参照ください。
CREATE TABLE test (id INT, name STRING); INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison'); SELECT id, name FROM test;
Java による JDBC 接続
-
プロジェクトに JDBC の依存関係を追加します。 次の例では Maven を使用します。
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.8</version> </dependency> -
次の Java コードで JDBC サービスに接続します。
import java.sql.*; public class App { public static void main(String[] args) throws Exception { Class.forName("org.apache.hive.jdbc.HiveDriver"); 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(); String sql = "SELECT * FROM test"; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1)); } } } -
オプション: 追加のジョブパラメーターを設定するには、次の例のように JDBC エンドポイント文字列に追加します。
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 による JDBC 接続
-
Spark リリースパッケージをダウンロードします。
-
Spark リリースパッケージを解凍します。
-
パス変数を設定します。
-
SPARK_HOME 環境変数を設定します。
export SPARK_HOME=/path/to/spark/; -
CLASSPATH 環境変数を設定します。
export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*; -
JayDeBeApi をインストールします。
pip install JayDeBeApi
-
-
次の Python コードで JDBC サービスに接続します。
import jaydebeapi driver = 'org.apache.hive.jdbc.HiveDriver' endpoint = 'jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****' jarPath = '/path/to/sparkhome/jars/hive-jdbc-****.jar' user = '****' password = '****' conn=jaydebeapi.connect(driver, endpoint, [user, password], [jarPath]) cursor = conn.cursor() cursor.execute("select 1") results = cursor.fetchall() cursor.close() conn.close() -
オプション: 追加のジョブパラメーターを設定するには、次の例のように JDBC エンドポイント文字列に追加します。
endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false"