大数据Apache Druid(七):Druid数据的全量更新
Druid数据的全量更新
Druid中不支持对指定的数据进行更新,只支持对数据进行全量替换,全量替换的粒度是以Segment为标准。举例说明如下:
现在在Druid中Datasoure “mydruid_testdata”中目前的数据如下:
SELECT
__time,
"count",
item,
loc,
sum_amount,
uid
FROM mydruid_testdata
我们可以在Druid webui中查看当前Datasource 对应的Segment信息,其对应的Segement在HDFS中的信息如下:
我们想要替换Datasouse “mydruid_testdata”中的数据,替换的粒度就是以segment为基准,假设我们需要替换当前“20210701T000000.000Z_20210702T000000.000Z”segment信息,我们只需要准备对应时间段内的数据,重新像导入数据一样,导入到当前名为“mydruid_testdata”的Datasource中即可,准备的对应时间段的新数据如下:
{"data_dt":"2021-07-01T08:13:23.000Z","uid":"uid001","loc":"深圳","item":"家具","amount":"10"}
{"data_dt":"2021-07-01T08:20:13.000Z","uid":"uid001","loc":"深圳","item":"家电","amount":"11"}
{"data_dt":"2021-07-01T09:24:46.000Z","uid":"uid002","loc":"西安","item":"生鲜","amount":"12"}
{"data_dt":"2021-07-01T09:43:42.000Z","uid":"uid002","loc":"西安","item":"家具","amount":"13"}
{"data_dt":"2021-07-01T09:53:42.000Z","uid":"uid003","loc":"海南","item":"生鲜","amount":"14"}
以上数据与目前Druid当前Datasource中此Segment的数据完全不一样,然后,我们将对应的数据上传到node3、node4、node5某个新路径下,在Druid webui 页面上选择“Load Data”以加载磁盘数据方式将数据加载到“mydruid_testdata”中,这里截图只是部分截图:
提交任务后,稍等片刻,在“Segment”标签下找到“mydruid_testdata”Datasource,可以最终看到指定的时间范围“20210701T000000.000Z~20210702T000000.000Z”内,只有一个最后提交的Segment片段信息(开始可能会有2个,等一会只剩最新提交的一个Segment)。
并且,查询Datasource“mydruid_testdata”数据结果也是最终新导入数据的结果:
SELECT
__time,
"count",
item,
loc,
sum_amount,
uid
FROM mydruid_testdata
- 点赞
- 收藏
- 关注作者
评论(0)