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规范根据摄取任务类型而有所不同。

  • 本机批量摄取:请参阅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(摄取规范)相关推荐

  1. druid配置数据库连接使用密文密码

    2019独角兽企业重金招聘Python工程师标准>>> spring使用druid配置dataSource片段代码 dataSource配置 <!-- 基于Druid数据库链接 ...

  2. mybatis配置mysql数据源_springboot+mybatis+Druid配置多数据源(mysql+postgre)

    springboot+mybatis+Druid配置多数据源(mysql+postgre) 引入pom依赖 org.mybatis.spring.boot mybatis-spring-boot-st ...

  3. Tomcat下使用Druid配置JNDI数据源

    转:Tomcat下使用Druid配置JNDI数据源 http://blog.csdn.net/houbin0912/article/details/52535982

  4. springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成

    大家好,我是烤鸭: 今天分享一下 springboot mybatis-plus 和 druid 的yml 配置文件. pom <dependency><groupId>org ...

  5. Druid 配置及内置监控,Web页面查看监控内容 【我改】

    转: Druid 配置及内置监控,Web页面查看监控内容 1.配置Druid的内置监控 首先在Maven项目的pom.xml中引入包 1 2 3 4 5 <dependency>      ...

  6. JNDI学习总结(4)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  7. mybatis使用拦截器显示sql,使用druid配置连接信息

    mybatis使用拦截器显示sql,使用druid配置连接信息 mybatis sql Druid 1.显示出sql内容: 新建2个类: MybatisInterceptor :拦截sql,并获得输出 ...

  8. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  9. druid 配置理解及监控界面参数理解

    druid 配置理解 官方文档中的很多配置,不是太理解或者貌似理解了,自己不实践一下,心里也不踏实,所以决定自己搞一个demo测试一下理解理解各个配置到底是什么意思 一,druidDataSource ...

  10. SpringBoo Mybatis Druid配置多数据源

    SpringBoo Mybatis Druid配置多数据源 前言:当单个数据库无法满足大量读写操作需求的时候,就需要用到多个数据库实现读写分离了.那么,这个时候,就需要去配置多数据源了.那么具体如何配 ...

最新文章

  1. Facebook面部识别新突破:可识别未标记照片中用户
  2. Weblogic 启动慢解决方法
  3. php用ajaxs上传图片_php+ajax实现图片文件上传功能实例
  4. Python 技术篇-在cmd命令提示行里模拟动态下载进度条实例演示,cmd清除日志、打印动态内容方法
  5. 【编译原理】编译是怎么一个过程?
  6. javascript 传多个参数的正则表达式(用来获取某个参数值)
  7. ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]
  8. git push本地代码到github出错
  9. 挂载Linux镜像文件,使用镜像文件安装依赖
  10. 虚拟机更改ip失败及没有虚拟网卡
  11. linux , Shell 文件合并的命令
  12. WPS 手动去除广告
  13. 纯干货:手把手地教你搭建Oracle Sharding数据库分片技术
  14. vertica rebalance优化
  15. Kalman实际应用总结
  16. Mybatis面试合集
  17. 计算机与网络技术基础
  18. html5 自动矢量化,HTML5中地圖矢量化
  19. SQL数据库中的一列数据按照英文字母先后顺序排列,怎么可以做到?
  20. 深入Unreal蓝图开发:自定义蓝图节点(下)

热门文章

  1. RTI DDS. c++11例子 -1
  2. 从第一代 iPhone 细数到 iPhone 12,iPhone 屏幕尺寸进化历程背后的 app 设计哲学
  3. c语言中-next是什么意思,Java中关于nextInt()、next()和nextLine()的理解
  4. 微信文章如何自动排版
  5. 外贸企业如何选ERP管理软件
  6. 世界GDP和新冠疫情直接关系
  7. 舒淇陈坤言承旭周渝民 揭秘与助理的爱恨纠葛
  8. 阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有
  9. 阿里云轻量应用服务器如何升级?
  10. 【20220318】执行脚本提示killed