MAPREDUCE服务 MRS-使用Hive CBO优化查询:操作步骤

时间:2024-04-22 14:51:52

操作步骤

  1. 在Manager界面Hive组件的配置中搜索“hive.cbo.enable”参数,选中“true”永久开启功能。

  2. 手动收集Hive表已有数据的统计信息。

    执行以下命令,可以手动收集统计信息。仅支持统计一张表,如果需要统计不同的表需重复执行。

    ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)]

    COMPUTE STATISTICS

    [FOR COLUMNS]

    [NOSCAN];

    • 指定FOR COLUMNS时,收集列级别的统计信息。
    • 指定NOSCAN时,将只统计文件大小和个数,不扫描具体文件。

    例如:

    analyze table table_name compute statistics;

    analyze table table_name compute statistics for columns;

  3. 配置Hive自动收集统计信息。开启配置后,执行insert overwrite/into命令插入数据时才自动统计新数据的信息。

    • 在Hive客户端执行以下命令临时开启收集:

      set hive.stats.autogather = true;开启表/分区级别的统计信息自动收集。

      set hive.stats.column.autogather = true; 开启列级别的统计信息自动收集。

      • 列级别统计信息的收集不支持复杂的数据类型,例如Map,Struct等。
      • 表级别统计信息的自动收集不支持Hive on HBase表。
    • 在Manager界面Hive的服务配置中,搜索参数“hive.stats.autogather”“hive.stats.column.autogather”,选中“true”永久开启收集功能。

  4. 执行以下命令可以查看统计信息。

    DESCRIBE FORMATTED table_name[.column_name] PARTITION partition_spec;

    例如:

    desc formatted table_name;

    desc formatted table_name id;

    desc formatted table_name partition(time='2016-05-27');

    分区表仅支持分区级别的统计信息收集,因此分区表需要指定分区来查询统计信息。

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