创建Druid模式时

时间:2019-01-31 23:17:06

标签: druid

我试图创建我的Druid模式,并引用了以下示例:

{"dimensionsSpec": {"dimensions": ["timestamp”,"netname"] },
 "columns":  ["second_time","timestamp"],
 "delimiter": "/001"
}

我的问题是,如果我指示尺寸,为什么还要再次指示列。 顺便说一句,我应该在维度中添加时间戳(秒)吗?因为我的粒度是MINUTE。

1 个答案:

答案 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 SpecImply Ingestion Spec Docs

第二个问题的答案:

维度列表中无需包含时间戳。要指定粒度,您可以使用粒度规格。这是示例:

"granularitySpec" : {
    "type" : "uniform",
    "segmentGranularity" : "HOUR",
    "queryGranularity" : "MINUTE"
    "rollup" : true
}

请注意,您可以在此处指定两种类型的粒度,segmentGranularity是指单个段应包含其数据的时间间隔的大小,并且在查询德鲁伊表时使用queryGranularity