Spark-sql CLI在运行查询时仅使用1个执行程序

时间:2015-01-22 03:10:45

标签: apache-spark apache-spark-sql

我将使用spark-sql cli来替换hive cli shell,并按照命令运行spark-sql cli,(我们正在使用纱线Hadoop集群,hive-site.xml已经复制到/ CONF)

&GT。火花SQL 然后shell打开并正常工作,

我执行类似的查询,

./ spark-sql>通过devicetype从mytable group中选择devicetype,count(*);

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

从火花作业ui,http://myhost:4040,我注意到只有1个Executor被标记使用,所以这可能是原因。

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

所以任何人都可以帮忙解释原因?

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

如果您想拥有SQL的集群版本,则应该启动thriftserver并使用beeline工具(与Spark一起使用)通过JDBC连接到它。您可以在官方文档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>

答案 1 :(得分:0)

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

10002是我的火花节俭服务器的端口。

将其更改为您的。 你可以从你的节俭日志中找到你的节俭港口。