配置流式读取Spark Driver执行结果
操作场景
Spark在执行查询语句时,返回结果有可能会很大(10万数量以上),在这种情况下,极易引发JDBCServer出现内存溢出(Out of Memory,简称 OOM)。为有效解决这一难题,我们提供了数据汇聚功能特性。该特性能够在基本不影响系统性能的前提下,最大程度地避免OOM情况的发生。
配置描述
提供两种不同的数据汇聚功能配置选项,两者在Spark JDBCServer服务端的tuning选项中进行设置,设置完后需要重启JDBCServer。
- 登录FusionInsight Manager系统。
详细操作请参考访问集群Manager。
- 选择“集群 > 服务 > Spark2x/Spark > 配置”,单击“全部配置”,搜索并调整以下参数。
其中:参数spark.sql.bigdata.thriftServer.useHdfsCollect和spark.sql.uselocalFileCollect不能同时设置为true。
表1 参数说明 参数
参数说明
取值示例
spark.sql.bigdata.thriftServer.useHdfsCollect
是否将结果数据保存到HDFS中而不是内存中。
false
spark.sql.uselocalFileCollect
是否将结果数据保存在本地磁盘中而不是内存里面。
false
spark.sql.collect.Hive
该参数在spark.sql.uselocalFileCollect开启的情况下生效。直接序列化的方式,还是间接序列化的方式保存结果数据到磁盘。
false
spark.sql.collect.serialize
该参数在spark.sql.uselocalFileCollect, spark.sql.collect.Hive同时开启的情况下生效。作用是进一步提升性能。
- java:采用java序列化方式收集数据。
- kryo:采用kryo序列化方式收集数据,性能要比采用java好。
java
- 修改参数配置后,单击“保存”,根据界面提示操作后,等待配置保存成功。
- Spark服务端配置更新后,如果“配置状态”为“配置过期”,则需重启组件以使配置生效。
图1 修改Spark配置在Spark服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。
组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。