一次覆盖多个分区Hadoop

1zmg4dgp  于 2022-11-28  发布在  Hadoop
关注(0)|答案(1)|浏览(217)

我有一个分区的外部表Hive,我必须用一些记录覆盖它。有很多日期需要重新加载,查询有点繁重。我们想知道的是,是否可以同时加载两个或更多不同的分区?例如,3个(或更多)进程并行运行,如:

进程1

  1. insert overwrite table_prod partition (data_date)
  2. select * from table_old where data_date=20221110;

进程2

  1. insert overwrite table_prod partition (data_date)
  2. select * from table_old where data_date=20221111;

进程3

  1. insert overwrite table_prod partition (data_date)
  2. select * from table_old where data_date=20221112;
wmomyfyw

wmomyfyw1#

简短的回答是肯定的。
真实的的问题是如何实现-因为您必须考虑大量的数据。
选项1 -是的,你可以使用shell脚本或一些调度工具。但是你使用的查询会很慢。你可以使用静态分区,这是更快的方式。

  1. insert overwrite table_prod partition (data_date=20221110) -- pls note i mentioned partition value.
  2. select
  3. col1, col2... -- exclude data_date column from select list
  4. from table_old where data_date=20221110;

选项2 -您也可以使用动态分区方案一次加载所有分区。这是一个性能密集型操作,但您不必创建任何shell脚本或任何其他进程。

  1. insert overwrite table_prod partition (data_date)
  2. select * from table_old

相关问题