如何使用cm_api api.query_timeseries设置数据粒度

问题描述

我正在尝试使用https://cloudera.github.io/cm_api/docs/python-client/中共享的代码获取过去1周的files_total和dfs_capacity_used指标。

import time
import datetime

from_time = datetime.datetime.fromtimestamp(time.time() - 1800)
to_time = datetime.datetime.fromtimestamp(time.time())
query = "select files_total,dfs_capacity_used " \
        "where serviceName = HDFS-1 " \
        "  and category = SERVICE"

result = api.query_timeseries(query,from_time,to_time)
ts_list = result[0]
for ts in ts_list.timeSeries:
  print "--- %s: %s ---" % (ts.Metadata.entityName,ts.Metadata.metricName)
  for point in ts.data:
    print "%s:\t%s" % (point.timestamp.isoformat(),point.value)

我正在获取输出。但是数据粒度每天都在显示。有没有办法像下面从Cloudera UI共享的快照中的选项那样每6小时获取一次输出

enter image description here

解决方法

query_timeseries不提供“数据粒度”选项。它将自动确定可以覆盖我们设置的时间段的时间段。

使用下面的get函数,我们可以根据数据粒度进行检索

api = ApiResource('CM_HOST',用户名='管理员',密码='管理员') api.get(relpath ='timeseries',params = {'query':'select files_total, dfs_capacity_used,其中serviceName = HDFS-1,类别= SERVICE','desiredRollup':'RAW','mustUseDesiredRollup':'True','from':'2020-08-10','to':2020-08-17})

如果我们几乎不希望将粒度设置为每小时6个,则可以将“ desiredRollup”设置为“ SIX_HOURLY”,将“ mustUseDesiredRollup”设置为“ True”。