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(userLatitude
,userLongitude
),其他列作为字符串,并为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 spec
中rollup
为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规范根据摄取任务类型而有所不同。
- 本机批量摄取:请参阅Native Batch IOConfig
- Hadoop Batch ingestion:请参阅Hadoop Batch IOConfig
- Kafka Indexing Service:请参阅Kafka Supervisor IOConfig
- Stream Push Ingestion:使用Tranquility进行Stream Push不需要IO配置
- Stream Pull Ingestion(已弃用):请参阅Stream pull ingestion
Tuning Config(调整配置)
TuningConfig规范根据摄取任务类型而有所不同。
- 本机批量摄取:请参阅Native Batch TuningConfig
- Hadoop Batch ingestion:请参阅Hadoop Batch TuningConfig
- Kafka Indexing Service:请参阅Kafka Supervisor TuningConfig
- Stream Push Ingestion(Tranquility):参见Tranquility TuningConfig
- Stream Pull Ingestion(已弃用):请参阅Stream pull ingestion
Evaluating Timestamp, Dimensions and Metrics(评估时间戳,维度和指标)
Druid将按以下顺序解释维度,维度排除和指标:
- 维度列表中列出的任何列都被视为维度。
- 维度排除列表中列出的任何列都将作为维度排除。
- 默认情况下会排除度量标准所需的时间戳列和列/字段名称。
- 如果度量标准也列为维度,则度量标准必须具有与维度名称不同的名称。
原文链接
http://druid.apache.org/docs/latest/ingestion/ingestion-spec.html#dataschema
Druid配置——Ingestion Spec(摄取规范)相关推荐
- druid配置数据库连接使用密文密码
2019独角兽企业重金招聘Python工程师标准>>> spring使用druid配置dataSource片段代码 dataSource配置 <!-- 基于Druid数据库链接 ...
- mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)
springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...
- Tomcat下使用Druid配置JNDI数据源
转:Tomcat下使用Druid配置JNDI数据源 http://blog.csdn.net/houbin0912/article/details/52535982
- springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成
大家好,我是烤鸭: 今天分享一下 springboot mybatis-plus 和 druid 的yml 配置文件. pom <dependency><groupId>org ...
- Druid 配置及内置监控,Web页面查看监控内容 【我改】
转: Druid 配置及内置监控,Web页面查看监控内容 1.配置Druid的内置监控 首先在Maven项目的pom.xml中引入包 1 2 3 4 5 <dependency> ...
- JNDI学习总结(4)——Tomcat下使用Druid配置JNDI数据源
com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...
- mybatis使用拦截器显示sql,使用druid配置连接信息
mybatis使用拦截器显示sql,使用druid配置连接信息 mybatis sql Druid 1.显示出sql内容: 新建2个类: MybatisInterceptor :拦截sql,并获得输出 ...
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...
- druid 配置理解及监控界面参数理解
druid 配置理解 官方文档中的很多配置,不是太理解或者貌似理解了,自己不实践一下,心里也不踏实,所以决定自己搞一个demo测试一下理解理解各个配置到底是什么意思 一,druidDataSource ...
- SpringBoo Mybatis Druid配置多数据源
SpringBoo Mybatis Druid配置多数据源 前言:当单个数据库无法满足大量读写操作需求的时候,就需要用到多个数据库实现读写分离了.那么,这个时候,就需要去配置多数据源了.那么具体如何配 ...
最新文章
- Facebook面部识别新突破:可识别未标记照片中用户
- Weblogic 启动慢解决方法
- php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
- Python 技术篇-在cmd命令提示行里模拟动态下载进度条实例演示,cmd清除日志、打印动态内容方法
- 【编译原理】编译是怎么一个过程?
- javascript 传多个参数的正则表达式(用来获取某个参数值)
- ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]
- git push本地代码到github出错
- 挂载Linux镜像文件,使用镜像文件安装依赖
- 虚拟机更改ip失败及没有虚拟网卡
- linux , Shell 文件合并的命令
- WPS 手动去除广告
- 纯干货:手把手地教你搭建Oracle Sharding数据库分片技术
- vertica rebalance优化
- Kalman实际应用总结
- Mybatis面试合集
- 计算机与网络技术基础
- html5 自动矢量化,HTML5中地圖矢量化
- SQL数据库中的一列数据按照英文字母先后顺序排列,怎么可以做到?
- 深入Unreal蓝图开发:自定义蓝图节点(下)
热门文章
- RTI DDS. c++11例子 -1
- 从第一代 iPhone 细数到 iPhone 12,iPhone 屏幕尺寸进化历程背后的 app 设计哲学
- c语言中-next是什么意思,Java中关于nextInt()、next()和nextLine()的理解
- 微信文章如何自动排版
- 外贸企业如何选ERP管理软件
- 世界GDP和新冠疫情直接关系
- 舒淇陈坤言承旭周渝民 揭秘与助理的爱恨纠葛
- 阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有
- 阿里云轻量应用服务器如何升级?
- 【20220318】执行脚本提示killed