分布式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=<监听端口>
export HIVE_SERVER2_THRIFT_BIND_HOST=<监听主机>
./sbin/start-thriftserver.sh \
--master <主节点 URI> \
  ...

或系统属性:

./sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=<监听端口> \
--hiveconf hive.server2.thrift.bind.host=<监听主机> \
--master <主控URI>
  ...

现在您可以使用 beeline 测试 Thrift JDBC/ODBC 服务器:

./bin/beeline

使用以下命令连接到beeline中的JDBC/ODBC服务器:

beeline> !连接 jdbc:hive2://localhost:10000

Beeline会要求您输入用户名和密码。在不安全模式下,只需在您的机器上输入用户名和留空密码。对于安全模式,请按照 beeline文档 中给出的说明进行操作。

Hive 的配置通过将您的 hive-site.xml core-site.xml hdfs-site.xml 文件放置在 conf/ 目录中完成。

您还可以使用随Hive提供的beeline脚本。

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

hive.server2.transport.mode - 设置为值:http
hive.server2.thrift.http.port - 监听的HTTP端口号;默认是 10001
hive.server2.http.endpoint - HTTP 端点;默认是 cliservice

要测试,请使用 beeline 以 HTTP 模式连接到 JDBC/ODBC 服务器:

beeline> !connect jdbc:hive2://<主机>:<端口>/<数据库>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=

如果你关闭了一个会话并进行了 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