为什么创建 Druid schema 时需要在 dimensionsSpec 中添加列
Why need to add columns in dimensionsSpec when creating Druid schema
我尝试创建我的 Druid 架构,我引用了一个示例如下:
{"dimensionsSpec": {"dimensions": ["timestamp”,"netname"] },
"columns": ["second_time","timestamp"],
"delimiter": "/001"
}
我的问题是,如果我指定了尺寸,为什么还要再次指定列。
顺便说一句,我应该在维度中放置时间戳(它是秒)吗?因为我的粒度是 MINUTE。
无需在摄取规范中指定列属性。 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。这是示例:
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "HOUR",
"queryGranularity" : "MINUTE"
"rollup" : true
}
注意,这里可以指定两种粒度,segmentGranularity指的是单个segment包含数据的时间间隔大小,查询druid时使用queryGranularity table
我尝试创建我的 Druid 架构,我引用了一个示例如下:
{"dimensionsSpec": {"dimensions": ["timestamp”,"netname"] },
"columns": ["second_time","timestamp"],
"delimiter": "/001"
}
我的问题是,如果我指定了尺寸,为什么还要再次指定列。 顺便说一句,我应该在维度中放置时间戳(它是秒)吗?因为我的粒度是 MINUTE。
无需在摄取规范中指定列属性。 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。这是示例:
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "HOUR",
"queryGranularity" : "MINUTE"
"rollup" : true
}
注意,这里可以指定两种粒度,segmentGranularity指的是单个segment包含数据的时间间隔大小,查询druid时使用queryGranularity table