我试图创建我的Druid模式,并引用了以下示例:
{"dimensionsSpec": {"dimensions": ["timestamp”,"netname"] },
"columns": ["second_time","timestamp"],
"delimiter": "/001"
}
我的问题是,如果我指示尺寸,为什么还要再次指示列。 顺便说一句,我应该在维度中添加时间戳(秒)吗?因为我的粒度是MINUTE。
答案 0 :(得分:1)
您无需在提取规范中指定“列”属性。 DimensionSpec和metricsSpec就足够了。这是摄取规范的示例示例:
"dimensionsSpec" : {
"dimensions": [
"srcIP",
{ "name" : "srcPort", "type" : "long" },
{ "name" : "dstIP", "type" : "string" },
{ "name" : "dstPort", "type" : "long" },
{ "name" : "protocol", "type" : "string" }
]
}
Druid有出色的文档,以下是有关如何编写摄入规范的良好参考链接: Writing Druid Ingestion Spec, Imply Ingestion Spec Docs
第二个问题的答案:
维度列表中无需包含时间戳。要指定粒度,您可以使用粒度规格。这是示例:
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "HOUR",
"queryGranularity" : "MINUTE"
"rollup" : true
}
请注意,您可以在此处指定两种类型的粒度,segmentGranularity是指单个段应包含其数据的时间间隔的大小,并且在查询德鲁伊表时使用queryGranularity