1、kafka json消息拆U,为了防止出现主键变化的情况,update数据是一条before一条after。如果只拿after的数据去更新,此时,主键变化了,则无法删除,所有应该用before的数据去做删除,再用after的数据去新增 |
2、小文件合并,因为hdfs底层存储是以block块为单位,默认为128M,如果过多的小文件不满128m,在做map的时候每一个文件就需要生成一个映射,过多的小文件会生成很多映射,会导致程序运行缓慢。将小文件合并成接近128m大小的文件,会大大增加map的效率。 |
3、字段分隔符,推荐使用" || "作为分隔符,如果使用"|",则容易对中文字段造成干扰 |
4、HDFS租约:hdfs同一个文件在被执行写入操作时会对该客户端赋予租约,如果程序在写入hdfs文件时发生中断,该租约还在存续,再想写入就会写不进。解决方法:1、写入程序发生意外中断时,要及时释放租约。2、或者每次写入写入到不同的文件,绕开租约问题。实际使用前者,hdfs shell命令为:hdfs debug recoverLease -retries 3 -path /... |
5、spark-sql当前处理完表后尤其是表结构,需要refresh,否则再次查询会报错。spark-sql在查询时,有时候要设置一个参数limitscan=false;否则查询后加了limit会报权限错误 |
6、hdfs的facl权限控制着表的文件权限,这个facl权限又受mask权限影响,如果facl权限小于组或者用户权限,那以facl权限为生效, |
7、在spark-sql中 create table xxx as select * from xxx; 这种方式建出来的表,默认存储方式是txt,正确的方式应该使用 create table like,然后将数据insert 进去 |
8、视图的优缺点 |
9、删除外表不会删除数据,只是删除了外表的源数据,如果将外表删表重建后,外表数据还指向之前的分区,那么此时查询是查不到数据的,必须msck repair才能恢复分区数据 |
10、parquet格式的在hive中移动字段,数据文件确实会移动,但是ORC格式的表,移动字段只会将修改表结构,实际底层文件不会移动,会造成查询列错位 |
11、spark-sql:用between and 代替in,也不要用 <> 和 like 都是全表扫描 |
12、华为集群采坑:在表路径下会生成_temporary临时文件,有着临时文件,用户访问就会报权限丢失 |
13、实时程序落地和转发程序拆分,原先先落地,再转发,等待落地完才能转发;后拆分为两套程序,分别消费topic,落地和转发分开,性能提升50%; |
08-09
149
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-17
4951
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)