Java Database Connectivity(JDBC)を使用して Lindorm Distributed Processing System(LDPS)にアクセスし、Spark SQL を使用してデータのクエリ、分析、生成を行うことができます。
前提条件
Lindorm インスタンスが作成され、そのインスタンスに対して LindormTable がアクティブ化されていること。 詳細については、「インスタンスの作成」をご参照ください。
Lindorm インスタンスに対して LDPS がアクティブ化されていること。 詳細については、「LDPS のアクティブ化と設定の変更」をご参照ください。
Java 統合開発環境(IDE)がインストールされていること。 Java Development Kit(JDK)のバージョンは 1.8 以降である必要があります。
LDPS へのアクセスに使用する JDBC エンドポイントの取得
LDPS への接続に使用するエンドポイントのクエリ方法については、「エンドポイントの表示」をご参照ください。
Beeline を使用した JDBC へのアクセス
Spark リリースパッケージ をダウンロードします。
ダウンロードした Spark リリースパッケージを解凍します。
SPARK_HOME 変数を、パッケージが解凍されたパスに設定します。
export SPARK_HOME=/path/to/spark/;
次の構成ファイルでパラメーターを構成します:
$SPARK_HOME/conf/beeline.conf
。endpoint: このパラメーターを LDPS の JDBC エンドポイントに設定します。
user: このパラメーターを、Lindorm ワイドテーブルへのアクセスに使用するユーザー名に設定します。
password: このパラメーターを、Lindorm ワイドテーブルへのアクセスに使用するパスワードに設定します。
shareResource: 複数のインタラクティブセッションで Spark リソースを共有するかどうかを指定します。 このパラメーターのデフォルト値は true です。
/bin/beeline
コマンドを実行します。 インタラクティブセッションで、SQL ステートメントを実行します。LDPS はさまざまな種類のデータソースをサポートしています。 詳細については、「注意事項」をご参照ください。
たとえば、Hive Metastore をアクティブ化した後、次のステートメントを実行してテーブルを作成し、テーブルにデータを書き込み、テーブル内のデータをクエリできます。 詳細については、「Hive Metastore を使用して Lindorm のメタデータを管理する」をご参照ください。
CREATE TABLE test (id INT, name STRING); INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison'); SELECT id, name FROM test;
Java コードを開発して JDBC にアクセスする
Maven など、お使いの環境で JDBC への依存関係を追加します。
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.8</version> </dependency>
JDBC にアクセスするための Java コードを開発します。 次のコードは、JDBC にアクセスする方法の例を示しています。
import java.sql.*; public class App { public static void main(String[] args) throws Exception { // Hive JDBC ドライバーを読み込みます 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 エンドポイントでパラメーターを指定できます。 次の例は、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 のパスを構成します。
export SPARK_HOME=/path/to/dir/;
CLASSPATH 変数を構成します。
export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*;
JayDeBeApi をインストールします。
pip install JayDeBeApi
JDBC にアクセスするための Python コードを開発します。 次のコードは、JDBC にアクセスする方法の例を示しています。
import jaydebeapi # JDBC ドライバーのクラス名 driver = 'org.apache.hive.jdbc.HiveDriver' # JDBC 接続 URL endpoint = 'jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****' # JDBC ドライバーの JAR ファイルのパス 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 エンドポイントでパラメーターを指定できます。 次の例は、JDBC エンドポイントでパラメーターを指定する方法を示しています。
endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false"