您可以通过JindoTable表或分区的访问热度收集功能来区分冷热数据,从而节约整体的存储成本,提高缓存利用效率。

前提条件

已创建集群,详情请参见创建集群

背景信息

JindoTable支持收集访问Hive表的记录,收集的数据保存在SmartData服务的Namespace中。

SmartData 3.2.x版本开始支持Spark、Hive和Presto引擎,Spark和Presto的数据收集默认是打开的,如果需要关闭,请参见关闭热度收集。Hive的数据收集默认是关闭的,如果需要打开,请参见开启Hive热度收集

数据查询

JindoTable提供了命令方式查询热度信息。
  • 语法
    jindo table -accessStat <-d [days]> <-n [topNums]>

    daystopNums为正整数。当只设置天数为1时,表示查询从本地时间当天0:00开始到现在的所有访问记录。

  • 功能

    查询在指定时间范围内,访问最多的N条表或分区的记录。

  • 示例:查询近七天,访问最多的20条表或分区的记录。
    jindo table -accessStat -d 7 -n 20

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

开启Hive热度收集

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 修改Hive的参数值。
    1. 在左侧导航栏,选择集群服务 > Hive
    2. 在Hive服务页面,单击配置页签。
    3. 搜索参数hive.exec.post.hooks,在参数值后追加com.aliyun.emr.table.hive.HivePostHook
  6. 保存配置。
    1. 单击右上角的保存
    2. 确认修改对话框中,输入执行原因,开启自动更新配置
    3. 单击确定
  7. 重启服务。
    1. 在Hive服务页面,选择右上角的操作 > 重启HiveServer2
    2. 执行集群操作对话框,输入执行原因
    3. 单击确定
    4. 确认对话框中,单击确定

关闭热度收集

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 修改参数值。
    • Hive服务:
      1. 在左侧导航栏,选择集群服务 > Hive
      2. 在Hive服务页面,单击配置页签。
      3. 搜索参数hive.exec.post.hooks,删除参数值中的com.aliyun.emr.table.hive.HivePostHookhive-site
    • Spark服务:
      1. 在左侧导航栏,选择集群服务 > Spark
      2. 在Spark服务页面,单击配置页签。
      3. 搜索参数spark.sql.queryExecutionListeners,删除参数值中的com.aliyun.emr.table.spark.SparkSQLQueryListenerspark_default
    • Presto服务:
      1. 在左侧导航栏,选择集群服务 > Presto
      2. 在Presto服务页面,单击配置页签。
      3. 搜索参数event-listener.name,删除参数值中的内容。
  6. 保存配置。
    1. 单击右上角的保存
    2. 确认修改对话框中,输入执行原因,开启自动更新配置
    3. 单击确定
  7. 重启服务。
    • Hive服务:
      1. 在Hive服务页面,选择右上角的操作 > 重启HiveServer2
      2. 执行集群操作对话框,输入执行原因
      3. 单击确定
      4. 确认对话框中,单击确定
    • Spark服务:
      1. 在Spark服务页面,选择右上角的操作 > 重启ThriftServer
      2. 执行集群操作对话框,输入执行原因
      3. 单击确定
      4. 确认对话框中,单击确定
    • Presto服务:
      1. 在Presto服务页面,选择右上角的操作 > 重启All Components
      2. 执行集群操作对话框,输入执行原因
      3. 单击确定
      4. 确认对话框中,单击确定