更新时间:2023-10-19 GMT+08:00
SparkSQL访问Hive分区表启动Job前耗时较长如何处理?
问题背景
使用SparkSql访问Hive的一个数据存放于OBS的一个分区表,但是运行速度却很慢,并且会大量调用OBS的查询接口。
SQL样例:
select a,b,c from test where b=xxx
原因分析
按照设定,任务应该只扫描b=xxx的分区,但是查看任务日志可以发现,实际上任务却扫描了所有的分区再来计算b=xxx的数据,因此任务计算的很慢。并且因为需要扫描所有文件,会有大量的OBS请求发送。
MRS默认开启基于分区统计信息的执行计划优化,相当于自动执行Analyze Table(默认开启的设置方法为spark.sql.statistics.fallBackToHdfs=true,可通过配置为false关闭)。开启后,SQL执行过程中会扫描表的分区统计信息,并作为执行计划中的代价估算,例如对于代价评估中识别的小表,会广播小表放在内存中广播到各个节点上,进行join操作,大大节省shuffle时间。 此开关对于Join场景有较大的性能优化,但是会带来OBS调用量的增加。
处理步骤
在SparkSQL中设置以下参数后再运行:
set spark.sql.statistics.fallBackToHdfs=false;
或者在启动之前使用--conf设置这个值为false:
--conf spark.sql.statistics.fallBackToHdfs=false
父主题: 大数据业务开发
大数据业务开发 所有常见问题
- MRS是否支持同时运行多个Flume任务?
- 如何修改FlumeClient的日志为标准输出日志?
- Hadoop组件jar包位置和环境变量的位置在哪里?
- HBase支持的压缩算法有哪些?
- MRS是否支持通过Hive的HBase外表将数据写入到HBase?
- 如何查看HBase日志?
- HBase表如何设置和修改数据保留期?
- 如何通过happybase连接到MRS服务的HBase?
- 如何修改HDFS的副本数?
- 如何修改HDFS主备倒换类?
- DynamoDB的number在Hive表中用什么类型比较好?
- Hive Driver是否支持对接dbcp2?
- 用户A如何查看用户B创建的Hive表?
- Hive样例工程中的com.huawei.gaussc10依赖包在哪里下载?
- Hive查询数据是否支持导出?
- Hive使用beeline -e执行多条语句报错如何处理?
- 添加Hive服务后,提交hivesql/hivescript作业失败如何处理?
- Hue下载的Excel无法打开如何处理?
- Hue连接hiveserver,不释放session,报错over max user connections如何处理?
- 如何重置Kafka数据?
- Kafka目前支持的访问协议类型有哪些?
- 消费Kafka Topic时报错“Not Authorized to access group XXX”如何处理?
- Kudu支持的压缩算法有哪些?
- 如何查看Kudu日志?
- 新建集群Kudu服务异常如何处理?
- MRS是否支持Python代码?
- OpenTSDB是否支持Python的接口?
- Presto如何配置其他数据源?
- MRS 1.9.3 Ranger证书如何更新?
- MRS如何连接spark-shell?
- MRS如何连接spark-beeline?
- Spark Job对应的运行日志保存在哪里?
- MRS的Storm集群提交任务时如何指定日志路径?
- 如何检查Yarn的ResourceManager配置是否正常?
- 如何修改Clickhouse服务的allow_drop_detached配置项?
- 执行Spark任务报内存不足告警如何处理?
- ClickHouse系统表日志过大,如何添加定期删除策略?
- 如何获取Spark Jar包?
- 修改hdfs-site.xml文件后未及时重启NameNode导致产生告警如何处理?
- SparkSQL访问Hive分区表启动Job前耗时较长如何处理?
- spark.yarn.executor.memoryOverhead设置不生效如何处理?
- 如何修改ClickHouse服务时区?
- 连接ClickHouse服务端异常报错“code: 516”如何处理?
more