spark写入hive表发生NativeFileSystem:rename过程

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 parquet

3 读写同一个表

-- 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版权协议,转载请附上原文出处链接和本声明。