2

我将使用 spark-sql cli 替换 hive cli shell,然后按照命令运行 spark-sql cli,(我们在 yarn Hadoop 集群上使用,hive-site.xml 已经复制到 /conf)

.> spark-sql 然后shell打开并且工作正常,

我执行一个类似的查询,

./spark-sql>select devicetype, count(*) from mytable group by devicetype;

命令执行成功,结果正确。但我注意到性能非常缓慢。

从 spark job ui, http://myhost:4040,我注意到只有 1 Executor 标记为 used,所以这可能是原因。

我尝试修改 spark-sql 脚本并在 exec 命令中添加 –num-executors 500,但它没有帮助。

所以任何人都可以帮助解释为什么?

谢谢。

4

2 回答 2

1

参考文档:http ://spark.apache.org/docs/latest/sql-programming-guide.html

spark-sql是一个只能在本地模式下工作的 SQL CLI 工具,这就是为什么你只能看到一个执行程序

例如,如果你想要一个集群版本的 SQL,你应该使用工具(与 Spark 一起使用)thriftserver通过 JDBC 启动并连接到它。beeline您可以在官方文档http://spark.apache.org/docs/latest/sql-programming-guide.html的运行 Thrift JDBC/ODBC 服务器一章中找到描述

开始:

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

连接:

./bin/beeline
beeline> !connect jdbc:hive2://<listening-host>:<listening-port>
于 2015-01-23T14:18:12.653 回答
0

直线 \> !connect jdbc:hive2://localhost:10002/default;transportMode=http;httpPath=cliservice

10002 是我的 spark thrift 服务器端口。

把它改成你的。您可以从 thrift 日志中找到您的 thrift 端口。

于 2016-12-20T19:17:04.773 回答