为什么创建 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