MAPREDUCE服务 MRS-如何对insert overwrite自读自写场景进行优化:操作步骤

时间:2024-11-28 01:44:47

操作步骤

假设存在如下一张表:

user_data(user_group int, user_name string, update_time timestamp);

其中user_group是分区列,需要根据已有数据,按更新时间进行排序,刷新用户组信息。操作步骤如下:

  1. 在Hive Beeline命令行执行以下命令开启Hive动态分区:

    set hive.exec.dynamic.partition=true;

    set hive.exec.dynamic.partition.mode=nonstrict;

  2. 执行以下命令创建一个临时表,用于存储去重后的数据:

    CREATE TABLE temp_user_data AS

    SELECT * FROM (

    SELECT *,

    ROW_NUMBER() OVER(PARTITION BY user_group ORDER BY update_time DESC) as rank

    FROM user_data

    ) tmp

    WHERE rank = 1;

  3. 执行以下命令使用临时数据作为数据源,并插入到目的表中:

    INSERT OVERWRITE TABLE user_data

    SELECT user_group, user_name, update_time

    FROM temp_user_data;

  4. 执行以下命令清理临时表:

    DROP TABLE IF EXISTS temp_user_data;

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2493132.html