spark写hive表,若有rename过程,串行rename每个文件(每秒一个),会导致写表速度缓慢;
1 发生原因

2 解决方案
1 元数据问题
-- 改成直接使用spark的元数据, 可以去掉rename过程
set spark.sql.hive.convertMetastoreParquet=true;
2 spark直接写路径
-- a. 有rename的写法
insert overwrite directory 'path' stored as parquet
-- b. 没有rename的写法
insert overwrite directory 'path' using parquet3 读写同一个表
-- a. 有rename的写法
insert overwrite table table_name partition(dt='20211118')
select
aa.gazj
,aa.cell_id
from
table_name aa
where
dt = '20211117'
;
-- b. 改进的写法(变相的实现overwrite功能)
alter table table_name drop partition(dt='20211118');
insert into table table_name partition(dt='20211118')
select
aa.gazj
,aa.cell_id
from
table_name aa
where
dt = '20211117'
;注意:不能读写同一个分区;
99 关键词
1 spark写hive表慢
2 Error in query: Cannot overwrite a path that is also being read from.
读写同一个表overwrite不行, 就改成into方式
版权声明:本文为weixin_40829577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。