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

Hadoop Impala-替换表分区中的所有数据,hadoop,cloudera-cdh,impala,Hadoop,Cloudera Cdh,Impala,我有一个程序,可以生成有关Impala表分区的所有数据。该程序将数据写入HDFS文本文件 如何从物理上删除以前属于分区的所有数据,并用以拼花格式转换的新文本文件中的数据替换它们 如果我使用原始HDFS API物理删除构成分区的旧拼花地板文件,是否会干扰Impala?为文本文件创建表格: create external table stg_table (...) location '<your text file in hdfs>'; 然后插入到目标表中 insert overwri

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

如何从物理上删除以前属于分区的所有数据,并用以拼花格式转换的新文本文件中的数据替换它们


如果我使用原始HDFS API物理删除构成分区的旧拼花地板文件,是否会干扰Impala?

为文本文件创建表格:

create external table stg_table (...) location '<your text file in hdfs>';
然后插入到目标表中

insert overwrite table target_table select * from stg_table;
如果目标表已分区,请执行以下操作:

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

关键字“overwrite”起作用,它会覆盖表或分区。

为文本文件创建表:

create external table stg_table (...) location '<your text file in hdfs>';
然后插入到目标表中

insert overwrite table target_table select * from stg_table;
如果目标表已分区,请执行以下操作:

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

关键字“overwrite”起作用,它会覆盖表或分区。

您的impala表是外部表吗?可以是外部表,也可以是内部表。我可以选择。你的黑斑羚表是外置的吗?可以是外置的,也可以是内置的。我可以选择,谢谢。它起作用了。但是,insert OVERRIDE语句需要时间。此外,我不确定该操作是否具有原子性。如果在运行insert OVERRIDE期间到达与此分区相关的Impala SQL查询,会发生什么情况?有没有一种方法可以使这个分区交换过程原子化并更快。使用ALTER语句为分区指定拼花地板文件的位置如何?例如:ALTER table p1 partition MOUNT=1,day=1 set location'/usr/external_data/new_years_day';或者使用Hadoop文件系统以编程方式删除Impala存储分区的HDFS文件夹,然后使用Spark作业生成的拼花文件重新创建文件夹,最后执行:更改表t1恢复分区谢谢。它起作用了。但是,insert OVERRIDE语句需要时间。此外,我不确定该操作是否具有原子性。如果在运行insert OVERRIDE期间到达与此分区相关的Impala SQL查询,会发生什么情况?有没有一种方法可以使这个分区交换过程原子化并更快。使用ALTER语句为分区指定拼花地板文件的位置如何?例如:ALTER table p1 partition MOUNT=1,day=1 set location'/usr/external_data/new_years_day';或者使用Hadoop文件系统以编程方式删除Impala存储分区的HDFS文件夹,然后使用Spark作业生成的拼花文件重新创建文件夹,最后执行:alter table t1 recover partitions