繁体   English   中英

如何从配置单元表插入到分区表(作为镶木地板)?

[英]how I can insert from hive table to partitioned table(as parquet)?

我有配置单元表和分区表。

我插入到分区表中,如下所示。 如果不存在,则自动创建分区。

我在impala 编辑器中运行此查询。

此查询花费的时间太长。

insert into   default.dw_partitioned_table
            partition (partition_islemtarih_string)
select *, cast(replace(strleft(recorddate,10),'-','')as int) as partition_islemtarih_string
from default.dw_hive_table
where recorddate <to_timestamp('2019-05-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')
 and  recorddate>=to_timestamp('2019-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss');   

我错过了什么还是我做错了?

提前致谢

您的插入很慢,因为impala 正在为原始表中的每个日期replace(strleft(recorddate,10),'-','')创建分区。 Impala 为每个分区创建物理文件,这就是它非常慢的原因。
如果您有大量记录并且您真的很想按日期分发数据,那么执行此操作将需要很长时间。
更好的想法是在记录日期的 MM-yyyy 上进行分区 - 这将创建均匀分布的分区。 查看您的 SQL,似乎您甚至可以通过 yyyy 进行分发。
另请注意静态分区要快得多。 例如 -
insert into t partition (part_col='2020') select * from t2 ; - 速度更快,因为impala 不必创建动态分区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM