带 hdfs 的 Impala 分区表

Posted

技术标签:

【中文标题】带 hdfs 的 Impala 分区表【英文标题】:Impala paritioned table with hdfs 【发布时间】:2014-11-18 16:59:35 【问题描述】:

我将数据以以下格式存储在 hdfs 中,并使用“alter table add partition”命令将此数据插入到 impala 分区表中。

/user/impala/subscriber_data/year=2013/month=10/day=01 /user/impala/subscriber_data/year=2013/month=10/day=02

一切正常。

现在我有一个新数据,月份和年份分别为 10 和 01。现在我需要处理这些数据并将这些数据附加到现有的 hdfs 目录中(年=2013/月=10/日=01)。

当我尝试处理并插入 hdfs 目录时,由于输出目录已经存在而给出错误。

有什么方法可以在不删除现有目录的情况下将新数据追加到现有的 hdfs 目录中?

另外,如何使用 impala 将新数据插入现有分区? (我只有年月日分区表)。

【问题讨论】:

【参考方案1】:

要插入现有分区,您必须删除现有分区,并将其与构成该分区的所有文件(包括您的新数据)一起添加回来。

【讨论】:

那么,需要对现有分区数据进行备份,删除分区并处理新数据,并与新旧数据创建相同的分区(已删除)? 另外,我在 /user/impala/year=2013/month=10/day=01/part-m-00000.snappy.parquet /user/ 这样的分区中有快速压缩数据的镶木地板impala/year=2013/month=10/day=01/part-m-00001.snappy.parquet .....如果我处理新数据,压缩后的数据将采用与part-m-00000相同的格式.snappy.parquet,part-m-00001.snappy.parquet 因此,这里的新旧数据将具有相同的文件名,这会再次产生问题(覆盖)。 您需要将这些文件放到同一个文件夹中并解决任何名称冲突,或者您可以使用 pig 合并文件。

以上是关于带 hdfs 的 Impala 分区表的主要内容,如果未能解决你的问题,请参考以下文章

将数据加载到 impala 分区表中

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

通过分区控制 Impala 中的数据局部性

IMPALA:基于未分区表创建新的分区表

Impala 如何支持分区?

Impala 分区查询运行缓慢