JindoTable表或分区的访问冷度收集功能可以为您维护表或分区上次的访问时间,从而筛选出最近没有被访问的数据,帮助您优化数据存储方式,节约成本。例如,在数据分析中,您可以把部分不常用的分区数据移动到成本更低的存储介质以节约成本。

前提条件

已创建EMR-3.35.0及后续版本或EMR-4.9.0及后续版本,创建详情请参见创建集群

背景信息

SmartData 3.5.x版本开始支持Hive、Spark和Presto组件的冷度收集功能。该功能目前默认不开启,如果需要开启,请参见开启Spark冷度收集开启Hive冷度收集开启Presto冷度收集
说明 因为冷度收集与热度收集使用相同的hooks或Listeners,所以开启组件的冷度收集时会同时打开热度收集功能。表或分区访问热度收集的详情,请参见JindoTable表或分区访问热度收集

使用限制

  • 不支持DLF数据湖元数据。
  • Hive CLI、HiveServer2、Spark SQL CLI、Spark Thriftserver和Presto服务所在IP需要有权限访问元数据底层存储(MySQL或RDS)。
  • 仅支持Hive、Spark和Presto组件的冷度收集。

数据查询

JindoTable提供了命令方式查询冷度信息。
  • 语法
    jindo table -leastUseStat -n <num> [-i/-ignoreNever]

    num是显示的条目数量,应为正整数。-i/-ignoreNever为可选参数,如果设置该参数,则会过滤掉从未被访问过的表或分区。

  • 功能

    展示最久未被访问的表或分区。

  • 示例:查询最久未被访问的表或分区的20条记录。
    jindo table -leastUseStat -n 20
    返回如下图所示三列结果。cold_result
    • 第一列为表的名字,格式:数据库名.表名。
    • 第二列为分区名字,格式:第一分区列=列值/第二分区列=列值/...,如果表为非分区表则为空。
    • 第三列为最近一次访问的时间,格式:yyyy-MM-dd HH:mm:ss。
    说明 如果为分区表,则只显示到分区级别,表本身不会单独显示。

JindoTable使用详情,请参见JindoTable使用说明

开启Spark冷度收集

  1. 进入Spark页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏,选择集群服务 > Spark
  2. 在Spark服务页面,单击配置页签。
  3. 搜索参数spark.sql.queryExecutionListeners,确保参数值包含com.aliyun.emr.table.spark.SparkSQLQueryListener,如果存在多个Listeners时使用英文分号(;)隔开。
    Spark
  4. 添加自定义配置。
    1. 服务配置页面,单击spark-defaults页签。
    2. 单击右上角的自定义配置
    3. 新增配置项对话框中,设置Keyspark.sql.query.update.access.time.enabledValuetrue
      add_spark_paraname
    4. 单击确定
  5. 保存配置。
    1. 单击保存
    2. 确认修改对话框中,输入执行原因,单击确定
  6. 重启所有组件。
    1. 在右上角选择操作 > 重启All Components
    2. 执行集群操作对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定

开启Hive冷度收集

  1. 进入Hive页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏,选择集群服务 > Hive
  2. 在Hive服务页面,单击配置页签。
  3. 搜索参数hive.exec.post.hooks,确保参数值包含com.aliyun.emr.table.hive.HivePostHook,如果存在多个hooks时使用英文分号(;)隔开。
    hive
  4. 添加自定义配置。
    1. 服务配置页面,单击hive-site页签。
    2. 单击右上角的自定义配置
    3. 新增配置项对话框中,设置Keyhive.hook.update.access.time.enabledValuetrue
      add_hive_paraname
    4. 单击确定
  5. 保存配置。
    1. 单击保存
    2. 确认修改对话框中,输入执行原因,单击确定
  6. 重启所有组件。
    1. 在右上角选择操作 > 重启All Components
    2. 执行集群操作对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定

开启Presto冷度收集

  1. 进入Presto页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏,选择集群服务 > Presto
  2. 在Presto服务页面,单击配置页签。
  3. 搜索参数event-listener.name,确保参数值包含jindo-presto-post-event-listener
    presto
  4. 添加自定义配置。
    1. 服务配置页面,单击event-listener.properties页签。
    2. 单击右上角的自定义配置
    3. 新增配置项对话框中,设置Keylistener.update.access.time.enabledValuetrue
      add_presto_paraname
    4. 单击确定
  5. 保存配置。
    1. 单击保存
    2. 确认修改对话框中,输入执行原因,单击确定
  6. 重启所有组件。
    1. 在右上角选择操作 > 重启All Components
    2. 执行集群操作对话框中,输入执行原因,单击确定
    3. 确认对话框中,单击确定