分散SQLエンジン

Spark SQLは、JDBC/ODBCまたはコマンドラインインターフェースを使用して、分散クエリエンジンとしても機能します。このモードでは、エンドユーザーまたはアプリケーションは、コードを記述することなく、Spark SQLと直接対話してSQLクエリを実行できます。

Thrift JDBC/ODBCサーバーの実行

ここで実装されているThrift JDBC/ODBCサーバーは、組み込みHiveのHiveServer2に対応しています。Sparkまたは互換性のあるHiveに付属のbeelineスクリプトを使用して、JDBCサーバーをテストできます。

JDBC/ODBCサーバーを起動するには、Sparkディレクトリで以下を実行します。

./sbin/start-thriftserver.sh

このスクリプトは、すべてのbin/spark-submitコマンドラインオプションと、Hiveプロパティを指定するための--hiveconfオプションを受け入れます。使用可能なすべてのオプションの完全なリストについては、./sbin/start-thriftserver.sh --helpを実行してください。デフォルトでは、サーバーはlocalhost:10000でリッスンします。この動作は、環境変数、つまり

export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \
  --master <master-uri> \
  ...

またはシステムプロパティを介してオーバーライドできます。

./sbin/start-thriftserver.sh \
  --hiveconf hive.server2.thrift.port=<listening-port> \
  --hiveconf hive.server2.thrift.bind.host=<listening-host> \
  --master <master-uri>
  ...

これで、beelineを使用してThrift JDBC/ODBCサーバーをテストできます。

./bin/beeline

beelineでJDBC/ODBCサーバーに接続するには、以下を使用します。

beeline> !connect jdbc:hive2://localhost:10000

Beelineはユーザー名とパスワードを尋ねます。非セキュアモードでは、マシンのユーザー名と空のパスワードを入力してください。セキュアモードの場合は、beelineのドキュメントに記載されている手順に従ってください。

Hiveの設定は、hive-site.xmlcore-site.xml、およびhdfs-site.xmlファイルをconf/に配置することで行います。

Hiveに付属のbeelineスクリプトを使用することもできます。

Thrift JDBCサーバーは、HTTPトランスポートを介したthrift RPCメッセージの送信もサポートしています。HTTPモードをシステムプロパティとして、またはconf/hive-site.xmlファイルで有効にするには、次の設定を使用します。

hive.server2.transport.mode - Set this to value: http
hive.server2.thrift.http.port - HTTP port number to listen on; default is 10001
hive.server2.http.endpoint - HTTP endpoint; default is cliservice

テストするには、beelineを使用してhttpモードでJDBC/ODBCサーバーに接続します。

beeline> !connect jdbc:hive2://<host>:<port>/<database>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=<http_endpoint>

セッションを閉じてCTASを実行する場合は、hive-site.xmlfs.%s.impl.disable.cacheをtrueに設定する必要があります。詳細は[SPARK-21067]を参照してください。

Spark SQL CLIの実行

シェルからSpark SQLコマンドラインインターフェース(CLI)を使用するには

./bin/spark-sql

詳細は、Spark SQL CLIを参照してください。