打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Druid配置

Ingestion Spec(摄取规范)

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

{  "dataSchema" : {...},  "ioConfig" : {...},  "tuningConfig" : {...}}
字段类型描述是否必须
dataSchemaJSON Object指定传入数据的Schema。所有Ingestion Spec都可以共享相同的dataSchema。
ioConfigJSON Object指定数据的来源和去向。此对象将随摄取方法而变化。
tuningConfigJSON 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}
字段类型描述是否必须
dataSourceString摄取数据源的名称。数据源可以被视为表。
parserJSON Object指定如何解析所摄取的数据。
metricsSpecJSON Object array聚合器列表。
granularitySpecJSON Object指定如何创建段和汇总数据。
transformSpecJSON Object指定如何过滤和转换输入数据。请参阅转换规范

Parser

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

String Parser

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

ParseSpec

ParseSpecs有两个目的:

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

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

JSON ParseSpec

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

字段类型描述是否必须
formatString这里应该为json
timestampSpecJSON Object指定时间戳的列和格式。
dimensionsSpecJSON Object指定数据的维度。
flattenSpecJSON 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创建的数据。

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

CSV ParseSpec

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

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

TimestampSpec

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

DimensionsSpec

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

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

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

Arbitrary Granularity Spec

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

字段类型描述是否必须
queryGranularitystring能够查询结果的最小粒度以及段内数据的粒度。例如,“minute”值表示数据以每分钟的粒度聚合。也就是说,如果元组(分钟(时间戳)、维度)中存在冲突,那么它将使用聚合器将值聚合在一起,而不是存储单独的行。“NONE”的粒度表示毫秒粒度。有关支持的粒度,请参阅Granularity否(默认==‘NONE’)
rollupboolean汇总与不汇总否(默认== true)
intervalsJSON 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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OpenAPI Specification 2.0
JSON Binding API 入门,第 3 部分: JSON
Apache Durid(入门 安装 数据摄取 查询 集成SpringBoot)
Ext.decode AND Ext.encode
fastjson 解析数据方式
android客户端从服务器端获取json数据并解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服