分布式 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 命令行选项,以及一个 --hiveconf 选项来指定 Hive 属性。您可以运行 ./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.xmlhdfs-site.xml 文件放在 conf/ 中来完成的。

您也可以使用 Hive 附带的 beeline 脚本。

Thrift JDBC 服务器还支持通过 HTTP 传输发送 Thrift RPC 消息。使用以下设置在 conf/ 中的 hive-site.xml 文件中或作为系统属性启用 HTTP 模式

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.xml 中将 fs.%s.impl.disable.cache 设置为 true。有关更多详细信息,请参阅 [SPARK-21067]

运行 Spark SQL CLI

要从 shell 使用 Spark SQL 命令行界面 (CLI)

./bin/spark-sql

有关详细信息,请参阅 Spark SQL CLI