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 或分区。
我有一个程序可以生成有关 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 或分区。