Druid:如何在没有聚合功能的情况下将数值数据添加到指标中
Posted
技术标签:
【中文标题】Druid:如何在没有聚合功能的情况下将数值数据添加到指标中【英文标题】:Druid:how to add a numeric data to metric without aggregation function 【发布时间】:2017-05-23 09:35:40 【问题描述】:场景是我想设置一个股票报价服务器并将报价数据保存到德鲁伊。
我的要求是通过查询得到所有股票的最新价格。
但是我注意到druid的查询接口比如时间序列只适用于metrics字段,而不是维度字段。
所以我考虑将价格作为指标之一,但不需要汇总。
我该怎么做?
有什么建议吗?
这是我的宁静配置文件。
"dataSources" :
"stock-index-topic" :
"spec" :
"dataSchema" :
"dataSource" : "stock-index-topic",
"parser" :
"type" : "string",
"parseSpec" :
"timestampSpec" :
"column" : "timestamp",
"format" : "auto"
,
"dimensionsSpec" :
"dimensions" : ["code","name","acronym","market","tradeVolume","totalValueTraded","preClosePx","openPrice","highPrice","lowPrice","latestPrice","closePx"],
"dimensionExclusions" : [
"timestamp",
"value"
]
,
"format" : "json"
,
"granularitySpec" :
"type" : "uniform",
"segmentGranularity" : "HOUR",
"queryGranularity" : "SECOND",
,
"metricsSpec" : [
"name" : "firstPrice",
"type" : "doubleFirst",
"fieldName" : "tradePrice"
,
"name" : "lastPrice",
"type" : "doubleLast",
"fieldName" : "tradePrice"
,
"name" : "minPrice",
"type" : "doubleMin",
"fieldName" : "tradePrice"
,
"name" : "maxPrice",
"type" : "doubleMax",
"fieldName" : "tradePrice"
]
,
"ioConfig" :
"type" : "realtime"
,
"tuningConfig" :
"type" : "realtime",
"maxRowsInMemory" : "100000",
"intermediatePersistPeriod" : "PT10M",
"windowPeriod" : "PT10M"
,
"properties" :
"task.partitions" : "1",
"task.replicants" : "1",
"topicPattern" : "stock-index-topic"
,
"properties" :
"zookeeper.connect" : "localhost:2181",
"druid.discovery.curator.path" : "/druid/discovery",
"druid.selectors.indexing.serviceName" : "druid/overlord",
"commit.periodMillis" : "15000",
"consumer.numThreads" : "2",
"kafka.zookeeper.connect" : "localhost:2181",
"kafka.group.id" : "tranquility-kafka"
【问题讨论】:
【参考方案1】:我认为您应该将 [latest_price] 作为新的数字维度,考虑到 druid 的工作原理,从性能和查询的角度来看它会好得多。 指标和旨在作为核心执行聚合功能的指标,因此对您的用例没有帮助。
【讨论】:
以上是关于Druid:如何在没有聚合功能的情况下将数值数据添加到指标中的主要内容,如果未能解决你的问题,请参考以下文章
如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?
如何在没有 Facebook、Twitter 等的情况下将社交功能集成到 iOS 和/或 Android 应用程序中?