Impala - 替换 table 分区中的所有数据

Impala - Replace all data in a table's partition

我有一个程序可以生成有关 Impala table 分区的所有数据。该程序将数据写入 HDFS 文本文件。

如何(物理地)删除所有以前属于该分区的数据,并用转换为 Parquet 格式的新文本文件中的数据替换它们?

如果我使用原始 HDFS API 物理删除组成分区的旧 Parquet 文件,它会打扰 Impala 吗?

为您的文本文件创建 table:

create external table stg_table (...) location '<your text file in hdfs>';

外部数据更改后必须刷新它:

refresh stg_table;

然后插入你的目标table

insert overwrite table target_table select * from stg_table;

如果您的目标 table 已分区,请执行以下操作:

insert overwrite table target_table partiton(<partition spec>) select * from stg_table;

关键字'overwrite' 就可以了,它会覆盖table 或分区。