spark的一些经验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark的一些经验相关的知识,希望对你有一定的参考价值。

1,如果写sql语句能实现的操作,最好就不要用dataframe了;spark会自己做优化,性能和稳定性都会比较高

2,中间过程存成parquet文件而不是HIVE表

3,能用reduceByKey就不要用groupByKey

4,在数据量很大或者存在倾斜的时候,可以考虑先repartition后在forEachPartition操作

5,将dataframe注册成临时表的代价很小

6,在spark内做一些output操作时,最好在forEachPartition内操作;比如每个partition内批量写Hbase或者elastic search

7,Hbase还是很脆弱的,批量写入时,尽量控制写入的速度

8,序列化可以使用json或者kyro;前者比较好理解,后者性能更好

9,批量读取HBase时,使用newAPIHadoopRdd比较高效

10,不要用流的思维写批处理程序

11,不要乱用cache,除非后续会多次重复使用

12,Hbase内rowkey最好不要设计成列不固定的形式

13,Hbase内rowkey设计成json的形式还是蛮好使的

14,一些中间的数据结构可以选择存在redis内,而不是存在Hbase内反复读写

15,多使用sparkUI进行分析,可能改几个配置,性能就上去了,Bug就解决了

16,写代码时,留一些基于用户的打印信息,方便后续测试;

17,测试的一些套路:用local模式在driver上看输出、在sparkUi上看executor的log或者自己做单机测试

 

以上是关于spark的一些经验的主要内容,如果未能解决你的问题,请参考以下文章

spark调优经验(待续)

原创 Hadoop&Spark 动手实践 8Spark 应用经验调优与动手实践

基于Spark的机器学习经验

[Spark经验一]Spark RDD计算使用的函数里尽量不要使用全局变量

IT技术人员转行大数据应该考虑哪些问题

数据安全推荐书籍6Spark全栈数据分析