2016-04-12 120 views
1

我是Impala新手,我試圖瞭解如何從表中刪除記錄... 我試過尋找刪除命令,但並沒有完全找到可以理解的說明...DELETE FROM table_name Cloudera Impala

這是我的表結構:

create table Installs (BrandID INT, PublisherID INT, InstallDate STRING, HourNum INT, Country STRING, Installs INT) PARTITIONED BY (day INT, month INT, year INT) STORED AS PARQUET 

是缺失可能在Hadoop中? 語法是如何工作的? 任何幫助將是對我來說是很大的幫助。謝謝:)

回答

2

從書參考 - learning-cloudera-impala

帕拉不支持跌落或在表中刪除行。另一種方法是刪除表或將所需數據遷移到其他表,然後刪除整個原始表。

要模擬其他數據庫系統中UPDATE或DELETE語句的效果,通常使用INSERT或CREATE TABLE AS SELECT將數據從一個表複製到另一個表,在複製操作期間過濾或更改相應的行。

work around

+0

謝謝,但我不與Hive一起工作,我與Cloudera Impala一起工作...... – Bramat

+0

@Bramat Kishore的答案是專門針對Impala,並且是正確的。這是意想不到的,記錄不完善的行爲,當我們開始使用Impala時,我們的團隊感到困惑。 –

1

簡短的回答:不,DELETE在因帕拉不支持。解決方法是用不想刪除的數據重寫表數據。

Cloudera Impala雖然支持SQL並可用於數據倉庫工作負載,但它不像傳統的RDBMS。像Hive一樣,它將文件存儲在HDFS中(並且可以通過多種方式與Hive進行互操作),因此,它被設計用於以塊的形式存儲非常大的文件。

因此,它就像它依賴的HDFS一樣,並不是爲了有效地刪除數據而設計的。