大数据开发-生产中遇到的10个致命问题

本文总结了大数据开发中遇到的十个致命问题,包括Hive和Spark的不兼容、数据覆盖与重复、MSCK REPAIR TABLE的问题、并发写入一致性等,并提供了相应的解决方案。这些问题在生产环境中可能导致数据不一致,对数据质量造成严重影响。
摘要由CSDN通过智能技术生成

生产环境版本 Hive: 1.2.1, Spark: 2.3.2

1.insert overwrite directory 不会覆盖数据

注意,生成结果是目录,生成目录里面的不同文件名不会被覆盖,因此很容易出现数据double或者没有覆盖到数据的问题,比如数据分片原始结果如下:

/mytable/000000_0
/mytable/000000_1
/mytable/000000_2
/mytable/000000_3 
## 新生成的数据只含有 000000_0分片,那么1 2 3分片并不会被删掉

解决方式:使用目录上面建立外表insertoverwrite, 如果这个目录是导入其他系统的目录文件,可能更致命。注意建立外表时候,如果是分区表,删除掉分区,然后insert overwrite也会导致数据重复,测试版本2.3.2

//a文件数据内容
//2  10
//2  10
//2  10
//创建管理表
create table t2(id int) partitioned by (dt string);
load data local inpath '/xxx/a'

// 创建外分区表
create external table t1(id int) partitioned by (dt string);
// overwrite分区10
insert overwrite table t1 partition(dt='10') select 1 from t2 where dt=10;
//删除分区10
ALTER TABLE t1 DROP PARTITION(dt='10');
// overwrite 10这个分区
insert overwrite table t1 partition(dt='10') select 2 from t2 where dt=10;

结果显示6条数据,显然是异常的,在hive中这个结果是正常的(ps,最后发现是由于组内小伙伴自己调试原因,改了参数,其实默认参数是没问题的,就是true)

解决方式:

set spark.sql.hive.conver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值