Hadoop 如何将新数据附加到已存在的配置单元表中

Hadoop 如何将新数据附加到已存在的配置单元表中,hadoop,hive,Hadoop,Hive,如何将记录附加到现有分区配置单元表中? 例如,我有一个名为“ip_country”的现有外部表,数据集是testdata1。如果数据集增长,比如说第二天我的数据集是testdata1和testdata2,那么如何将新数据,即“testdata2”附加到“ip_country”配置单元表中。可以通过两种方式实现(完全取决于您的要求) 如果您不介意覆盖分区中的现有记录(我的意思是您没有大的历史数据,比如10年的数据),那么插入覆盖可能合适 插入覆盖表tablename1[PARTITION(part

如何将记录附加到现有分区配置单元表中?
例如,我有一个名为“ip_country”的现有外部表,数据集是testdata1。如果数据集增长,比如说第二天我的数据集是testdata1和testdata2,那么如何将新数据,即“testdata2”附加到“ip_country”配置单元表中。

可以通过两种方式实现(完全取决于您的要求)

  • 如果您不介意覆盖分区中的现有记录(我的意思是您没有大的历史数据,比如10年的数据),那么插入覆盖可能合适
  • 插入覆盖表tablename1[PARTITION(partcol1=val1, partcol2=val2…[如果不存在]]从中选择_语句1 来自联合声明

  • 如果您不担心分区中的重复记录,那么Insert Into可能合适(老实说,我不希望有重复的记录)
  • 插入表tablename1[PARTITION(partcol1=val1,partcol2=val2 …)]从_语句中选择_语句1

  • 如果您有历史数据和增量数据,则历史数据可以插入一次,增量数据(基于您选择的每日/每周/每两周的频率)可以使用插入覆盖插入

  • 尝试我不想再次覆盖历史数据。我只想在不干扰现有数据的情况下插入增量记录。在这种情况下,哪种插入覆盖对我不起作用。快速查询。因此,通过增量数据,您仅参考前一天的数据。未来会出现的数据。很好。因为,您需要每日刷新(仅前一天),然后假设您的表在日期列上进行分区,然后在每天刷新时,使用新数据的新分区就是我们所看到的。因此,插入就足够了。而INSERT OVERWRITE也会像INSERT-in(无需覆盖)一样,因为它是每日刷新(仅1天)。。据我所知,您的用例1只有3种解决方案。如果使用INSERT INTO,则必须处理重复记录,因为分区列是country。2.如果使用插入覆盖(我认为这对您的用例来说是最好的),那么删除和插入就会发生。此外,在删除记录和插入记录时不会有太多开销。3.若您对以上两项都不满意,那个么必须将date列引入表中,并将其作为一个分区。在这种情况下,可以使用INSERT INTO。希望这对你有帮助:)