![](/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.