druid.io之merge task

在开发过程中,由于刚刚使用druid.io时,数据量比较小,所以如果按照小时来存储结果,发现每个segments只有几兆的大小,这种大量的小文件不适合在HDFS集群上进行深度存储,同时也会降低查询性能等等,所以迫切需要一种方案对segment进行数据合并,在查询druid.io的配置参数时,发现druid.io的协调节点上可以开启参数
druid.coordinator.merge.on
每隔一点时间,会向druid的协调节点上提交一个mege_task的任务,对新增的segments进行合并(当然在实际只用中,该参数还需要结合一些其他的参数一起)
那么这个参数开启后,会发现一个问题,这个参数只对开启参数之后的新增的segments进行合并,那么如果需要对历史上已经存在的segments进行合并,改如何处理呢,这就是我们今天的主题,druid.io手动调用segement合并任务
(一)segment合并任务(过时)
追加合并Task:将一个list集合的段落合并到一个单独的segments(一个接一个的合并)

{
    "type": "append",
    "id": <task_id>,
    "dataSource": <task_datasource>,
    "segments": <JSON list of DataSegment objects to append>,
    "aggregations": <optional list of aggregators>,
    "context": <task context>
}

合并Task:(将一个集合的list合并到一起,并且相同的时间戳的数据也会聚合,如果摄入的部分被删除,相通的时间是不会参与聚合的,并且这个记录会被单独重新记录)

{
    "type": "merge",
    "id": <task_id>,
    "dataSource": <task_datasource>,
    "aggregations": <list of aggregators>,
    "rollup": <whether or not to rollup data during a merge>,
    "segments": <JSON list of DataSegment objects to merge>,
    "context": <task context>
}

(二)按照Intervals数据进行数据聚合
改方式是segments合并的一个捷径,所有在这个intervals的数据都将会被聚合

 {
    "type": "same_interval_merge",
    "id": <task_id>,
    "dataSource": <task_datasource>,
    "aggregations": <list of aggregators>,
    "rollup": <whether or not to rollup data during a merge>,
    "interval": <DataSegment objects in this interval are going to be merged>,
    "context": <task context>
}

实例:
http://druid.ip :18090/druid/indexer/v1/task

{
    "type": "same_interval_merge",
    "dataSource": "TEST-CTI-PT30M-PT1H",
    "aggregations":[
        {
          "type": "longSum",
          "name": "readyNum",
          "fieldName": "readyNum",
          "expression": null
        },
        {
          "type": "longSum",
          "name": "notReadyNum",
          "fieldName": "notReadyNum",
          "expression": null
        }],
    "rollup":true,
    "interval":"2019-01-01/2019-02-01",
    "context":{}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值