Spark写入hive表数据 (hive中怎么插入数据)

用户反馈出现如下异常:

hive外部表写入,hive空间不够无法写入

出现上面异常之后用户跑的任务都是失败,无法写入数据到hive表

用户给了一条复现SQL如下:

set hive.metastore.client.socket.timeout=1800; 
load data local inpath  "/data02/hdfs_oiv/oiv_file/20210927_ctyunns1_nm-bigdata-030074042.ctc.local" overwrite into table yfzx.hdfs_fsimage_analyze_ah3 PARTITION(dt="20210927", ns="ctyunns1");

通过客户端执行这个SQL,总是出现连接metastore超时,这个就让人很纳闷了,明明执行show tables很快就返回

通过metastore元数据库执行查找mysql死锁的,没有发现

show OPEN TABLES where In_use > 0;

于是去查找HIVE_LOCKS表,发现了yfzx.hdfs_fsimage_analyze_ah3表被锁住了

select * from HIVE_LOCKS;

查询该表死锁情况如下

hive外部表写入,hive空间不够无法写入

执行之前用户给的复现SQL,每执行一次,HIVE_LOCKS就增加一条死锁记录,也就是该表被锁住了,不能再操作了,把客户端复现的Ctrl+C中断,该表的死锁记录就减少一条

于是执行如下SQL,删除死锁,3条记录都干掉,干掉之后用户写入数据就正常了,具体为什么产生这个死锁,目前还没找到原因

delete from HIVE_LOCKS where HL_LOCK_EXT_ID=3212 and HL_LOCK_INT_ID=1;