![](/img/trans.png)
[英]How to delete fields from a partitioned table in Hive stored as parquet?
[英]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.