簡體   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