【问题标题】:Impala paritioned table with hdfs带 hdfs 的 Impala 分区表
【发布时间】: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 将新数据插入现有分区? (我只有年月日分区表)。

【问题讨论】:

    标签: hadoop apache-pig 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 合并文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多