Druid配置——Ingestion Spec(摄取规范)

Ingestion Spec(摄取规范)

Apache Druid ingestion spec 由三个部分组成:

{
  "dataSchema" : {...},
  "ioConfig" : {...},
  "tuningConfig" : {...}
}
字段 类型 描述 是否必须
dataSchema JSON Object 指定传入数据的Schema。所有Ingestion Spec都可以共享相同的dataSchema。
ioConfig JSON Object 指定数据的来源和去向。此对象将随摄取方法而变化。
tuningConfig JSON Object 指定如何调整各种摄取参数。此对象将随摄取方法而变化。

DataSchema

以下是一个dataSchema的示例:

"dataSchema" : {
  "dataSource" : "wikipedia",
  "parser" : {
    "type" : "string",
    "parseSpec" : {
      "format" : "json",
      "timestampSpec" : {
        "column" : "timestamp",
        "format" : "auto"
      },
      "dimensionsSpec" : {
        "dimensions": [
          "page",
          "language",
          "user",
          "unpatrolled",
          "newPage",
          "robot",
          "anonymous",
          "namespace",
          "continent",
          "country",
          "region",
          "city",
          {
            "type": "long",
            "name": "countryNum"
          },
          {
            "type": "float",
            "name": "userLatitude"
          },
          {
            "type": "float",
            "name": "userLongitude"
          }
        ],
        "dimensionExclusions" : [],
        "spatialDimensions" : []
      }
    }
  },
  "metricsSpec" : [{
    "type" : "count",
    "name" : "count"
  }, {
    "type" : "doubleSum",
    "name" : "added",
    "fieldName" : "added"
  }, {
    "type" : "doubleSum",
    "name" : "deleted",
    "fieldName" : "deleted"
  }, {
    "type" : "doubleSum",
    "name" : "delta",
    "fieldName" : "delta"
  }],
  "granularitySpec" : {
    "segmentGranularity" : "DAY",
    "queryGranularity" : "NONE",
    "intervals" : [ "2013-08-31/2013-09-01" ]
  },
  "transformSpec" : null
}
字段 类型 描述 是否必须
dataSource String 摄取数据源的名称。数据源可以被视为表。
parser JSON Object 指定如何解析所摄取的数据。
metricsSpec JSON Object array 聚合器列表。
granularitySpec JSON Object 指定如何创建段和汇总数据。
transformSpec JSON Object 指定如何过滤和转换输入数据。请参阅转换规范

Parser

如果type未包含,则解析器默认为string。有关其他数据格式,请参阅我们的扩展列表

String Parser

字段 类型 描述 是否必须
type String 这应该是一般意义上的string,或者Hadoop索引作业中使用的hadoopyString
parseSpec JSON Object 指定数据的格式,时间戳和维度。

ParseSpec

ParseSpecs有两个目的:

  • String Parser使用它们来确定传入行的格式(即JSON,CSV,TSV)。
  • 所有解析器都使用它们来确定传入行的时间戳和维度。

如果format未包含,则parseSpec默认为tsv

JSON ParseSpec

与String Parser一起使用它来加载JSON。

字段 类型 描述 是否必须
format String 这里应该为json
timestampSpec JSON Object 指定时间戳的列和格式。
dimensionsSpec JSON Object 指定数据的维度。
flattenSpec JSON Object 指定嵌套JSON数据的展平配置。有关详细信息,请参阅Flattening JSON

JSON Lowercase ParseSpec

_jsonLowercase_解析器已弃用,可能会在未来的Druid版本中删除。

这是JSON ParseSpec的一种特殊变体,它可以降低传入JSON数据中所有列名称的大小。如果您从Druid 0.6.x更新到Druid 0.7.x,直接使用混合大小写的列名称直接摄取JSON,没有任何ETL来小写这些列名称,并且想要进行查询,则需要此parseSpec包括使用0.6.x和0.7.x创建的数据。

字段 类型 描述 是否必须
format String 这里应该为jsonLowercase
timestampSpec JSON Object 指定时间戳的列和格式。
dimensionsSpec JSON Object 指定数据的维度。

CSV ParseSpec

与String Parser一起使用它来加载CSV。使用com.opencsv库解析字符串。

字段 类型 描述 是否必须
format String 这里应该为csv
timestampSpec JSON Object 指定时间戳的列和格式。
dimensionsSpec JSON Object 指定数据的维度。
listDelimiter String 多值维度的自定义分隔符。 否(默认== ctrl + A)
columns JSON array 指定数据的列。

TimestampSpec

字段 类型 描述 是否必须
column String 时间戳的列。
format String iso,posix,millis,micro,nano,auto或任何Joda time格式。 否(默认== ‘auto’)

DimensionsSpec

字段 类型 描述 是否必须
dimensions JSON array dimension schema对象或维度名称的列表。提供名称相当于提供具有给定名称的String类型维度模式。如果这是一个空数组,Druid会将所有未出现在“dimensionExclusions”中的非时间戳,非度量列视为字符串类型的维列。
dimensionExclusions JSON String array 要从摄取中排除的维度的名称。 否(默认== [])
spatialDimensions JSON Object array 一系列spatial dimensions 否(默认== [])

Dimension Schema

维度模式指定要摄取的维度的类型和名称。

对于字符串列,维度模式还可用于通过设置createBitmapIndex布尔值来启用或禁用位图索引 。默认情况下,为所有字符串列启用位图索引。只有字符串列才能有位图索引; 数字列不支持它们。

例如,以下dimensionsSpec部分将dataSchema一列作为Long(countryNum),两列作为Float(userLatitudeuserLongitude),其他列作为字符串,并为comment列禁用位图索引。

"dimensionsSpec" : {
  "dimensions": [
    "page",
    "language",
    "user",
    "unpatrolled",
    "newPage",
    "robot",
    "anonymous",
    "namespace",
    "continent",
    "country",
    "region",
    "city",
    {
      "type": "string",
      "name": "comment",
      "createBitmapIndex": false
    },
    {
      "type": "long",
      "name": "countryNum"
    },
    {
      "type": "float",
      "name": "userLatitude"
    },
    {
      "type": "float",
      "name": "userLongitude"
    }
  ],
  "dimensionExclusions" : [],
  "spatialDimensions" : []
}

metricsSpec

metricsSpec是一个聚合器列表。如果在granularity specrollup为false,则metricsSpec应该是一个空列表,所有列应该在dimensionsSpec中定义(没有rollup,在获取时维度和度量之间没有真正的区别)。不过,这是可选的。

GranularitySpec

GranularitySpec定义了如何将数据源划分为时间块。默认granularitySpec是uniform,可以通过设置type字段来更改。目前,支持uniform类型和arbitrary类型。

Uniform Granularity Spec

此规范用于生成具有均匀间隔的段。

字段 类型 描述 是否必须
segmentGranularity string 创建时间块的粒度。每个时间块可以创建多个段。例如,在“DAY”分段粒度的情况下,同一天的事件属于相同的时间块,可以根据其他配置和输入大小可选地进一步划分为多个段。有关支持的粒度,请参阅Granularity 否(默认==‘DAY’)
queryGranularity string 能够查询结果的最小粒度以及段内数据的粒度。例如,“minute”值表示数据以每分钟的粒度聚合。也就是说,如果元组(分钟(时间戳)、维度)中存在冲突,那么它将使用聚合器将值聚合在一起,而不是存储单独的行。“NONE”的粒度表示毫秒粒度。有关支持的粒度,请参阅Granularity 否(默认==‘NONE’)
rollup boolean 汇总与不汇总 否(默认== true)
intervals JSON string array 正在摄取的原始数据的间隔列表。忽略实时摄取。 否,如果指定,Hadoop和本地非并行批处理摄取任务可能会跳过确定分区阶段,这将导致更快的摄取; 本机并行摄取任务可以预先请求所有锁,而不是逐个请求。批量摄取将丢弃任何没有在指定时间间隔内的数据。

Arbitrary Granularity Spec

此规范用于生成具有任意间隔的段(它试图创建大小均匀的段)。此规范不支持实时处理。

字段 类型 描述 是否必须
queryGranularity string 能够查询结果的最小粒度以及段内数据的粒度。例如,“minute”值表示数据以每分钟的粒度聚合。也就是说,如果元组(分钟(时间戳)、维度)中存在冲突,那么它将使用聚合器将值聚合在一起,而不是存储单独的行。“NONE”的粒度表示毫秒粒度。有关支持的粒度,请参阅Granularity 否(默认==‘NONE’)
rollup boolean 汇总与不汇总 否(默认== true)
intervals JSON string array 正在摄取的原始数据的间隔列表。忽略实时摄取。 否,如果指定,Hadoop和本地非并行批处理摄取任务可能会跳过确定分区阶段,这将导致更快的摄取; 本机并行摄取任务可以预先请求所有锁,而不是逐个请求。批量摄取将丢弃任何没有在指定时间间隔内的数据。

Transform Spec(变换规格)

变换规范允许Druid在摄取期间转换和过滤输入数据。请参见 Transform specs

IO Config(IO配置)

IOConfig规范根据摄取任务类型而有所不同。

Tuning Config(调整配置)

TuningConfig规范根据摄取任务类型而有所不同。

Evaluating Timestamp, Dimensions and Metrics(评估时间戳,维度和指标)

Druid将按以下顺序解释维度,维度排除和指标:

  • 维度列表中列出的任何列都被视为维度。
  • 维度排除列表中列出的任何列都将作为维度排除。
  • 默认情况下会排除度量标准所需的时间戳列和列/字段名称。
  • 如果度量标准也列为维度,则度量标准必须具有与维度名称不同的名称。

原文链接

http://druid.apache.org/docs/latest/ingestion/ingestion-spec.html#dataschema

猜你喜欢

转载自blog.csdn.net/u010993514/article/details/94740217
今日推荐