1 使用kryo序列化
2 调整batch interval时间 默认时间是200ms 每接受一次实际上就是一份task 就会在一份patition上面运行,根据自己设置指定大小的interval 例如batch interval是200ms batch的时间长度是1s 那么就会划分出1s/200ms==》五份patition 也就是五个并行度 最好并行度是core的2-3倍
3 spark.rdd.compress 可以进一步对数据压缩减少内存使用量
4 streamingcontext.remember() 可以尝试保留窗口时间之外的数据 例如窗口时间是1分钟 那么1分钟前之前的数据也可以保留
5 设置cms垃圾收集器
在spark-sumbit 的 -driver-java-options
spark-executor.extraJavaOptions设置 XX:+UserConcMarkSweepGC
6 提升接受并行度 使用多个Receiver 例如两个topic 使用两个Receiver 再做Union操作