我是 Impala 的新手,我正在尝试理解如何从表中删除记录。。。我试过寻找delete命令,但没有找到可以理解的指令。。。
这是我的表格结构:
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条答案
按热度按时间sqserrrh1#
参考书籍-学习cloudera impala
impala不支持删除表中的行。另一种方法是删除表或将所需数据迁移到其他表,然后删除整个原始表。
要模拟其他数据库系统中update或delete语句的效果,通常使用insert或create table as select将数据从一个表复制到另一个表,在复制操作期间过滤或更改相应的行。
解决方法
pgky5nke2#
简短回答:不,在 Impala 中不支持删除。解决方法是用不在其中的要删除的数据重写表数据。
cloudera impala虽然支持sql并可用于数据仓库工作负载,但它不像传统的rdbms。与hive一样,它将文件存储在hdfs中(并且在许多方面与hive互操作),因此,它被设计成以块的形式存储非常大的文件。
因此,与它所依赖的hdfs一样,它的设计并不能有效地删除数据。