标签:ase executor bug 批量 自己 使用 search sea arc
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或者自己做单机测试
标签:ase executor bug 批量 自己 使用 search sea arc
原文地址:http://www.cnblogs.com/kernel521/p/7277223.html