没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Apache Druid 系列文章
1、Druid(Imply-3.0.4)介绍及部署(centos6.10)、验证
2、Druid的入门示例(使用三种不同的方式摄入数据和提交任务)
3、Druid的load data 示例(实时kafka数据和离线-本地或hdfs数据)
4、java操作druid api
5、Druid配置文件详细介绍以及示例
6、Druid的Roll up详细介绍及示例
@TOC
本文主要介绍了Druid的配置文件内容,以及以示例说明配置文件的使用。
本文依赖是Druid和kafka环境具备。
本文分为2个部分,即配置文件说明和数据查询示例。
一、摄取配置文件结构说明
1、整体结构
摄取配置文件主要由以下几个部分组成
type:文件上传方式(index、index_hadoop、kafka)
spec
dataSchema:数据解析模式
ioConfig:数据源
turningConfig:优化配置(分区规则、分区大小)
示例
{
# 表示上传的方式,本地文件上传使用index,hdfs文件上传使用index_hadoop
"type":"index_hadoop",
# 用于设置数据的具体配置以及转换方式
"spec"{},
# (可选):用于配置一些运行参数,比如可以设置上传csv时候是否包含表头行
"context":{}
}
2、dataSchema-数据解析模式
数据解析模式,主要为针对数据文件,定义了一系列规则。如:
数据源
数据解析规则
数据粒度规则配置
定义如何进行指标计算
1)、配置项说明
{
// 文件上传方式
"type": "index",
"spec": {
// 数据解析模式
"dataSchema": {...},
// 摄取数据源
"ioConfig": {...},
// 摄取过程优化配置(可选)
"tuningConfig": {...}
}
}
// 1、dataSource:数据源名称,用于设置上传数据之后的表名称。
"dataSource"="tableName"
// 2、parser:用于指定数据怎么被转化,转化为什么格式
// type:指定常规数据的格式,默认为string;如果保存hdfs上那么指定为hadoopyString
// parseSpec:用于指定数据转换格式
// format:指定上传文件格式,可以为csv,json,tsv,javascript、timeAndDims等
// timestampSpec:指定时间戳序列,包含column以及format两个参数,column必选,用于指定时间
戳对应的列。format用于指定时间格式,可以使用iso、millis、posix、zuto,默认为auto。示例:
"timestampSpec":{"format":"auto","column":"start_time"}
// columns(可选):csv格式特有,用于指定源数据中的列名。用于配置源文件中应该包含的所有列的列
名。示例:
"columns":["columns","column2","column3"]
// dimensionsSpec:配置维度数据,也就是将要在druid数据表中展现的列。dimensionExclusion可
选,用于指定不需要的数据,默认为空;spatialDimensions可选,用于指定列的空间限制,默认为空。示
例:
"dimensionsSpec":{
"dimensions":["page","language",{"type":"long","name":"countryNum" }
]
}
// 如果字段为String,那么直接列出,如果为其他类型如long/double等,需要使用
{"type":"long","name":"字段名称" }单独列出。配置时间戳的列不需要在dimensions中列出。
//3、granularitySpec:指定如何划分segment以及数据的时间范围
// type:用来指定粒度类型的使用,默认为type=uniform,建议设置为uniform或arbitrary(尝试创
建大小相等的字段)
2)、示例
// segmentGranularity(可选):指定每个segment包含的时间戳的范围。默认为day,用来确定每个
segment包含的时间戳的范围,可以为"SECOND"、"MINUTE"
、"HOUR"、"DAY"、"DOW"、"DOY"、"WEEK"、"MONTH"、"QUARTER"、"YEAR"、"EPOCH"、"DECADE"
、"CENTURY"、"MILLENNIUM"等。
// queryGranularity(可选):默认为None,允许查询的时间粒度,单位与segmentGranularity相
同,如果为None那么允许以任意时间粒度进行查询。
// rollup(可选):是否使用预计算算法,默认为true,推荐true,比较快。
// intervals:用于指定上传时间限制时间段。只有时间段内的数据可以上传。批量数据导入需要设置/流
式导入无需设置。示例:
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "DAY",
"queryGranularity" : { "type" : "none"},
"rollup" : "true",
"intervals" : [ "2017-11-15T00:00:00.000Z/2017-11-18T00:00:00.000Z"
]
}
//4、metricsSpec:包含了一系列的aggregators转换
//type可以为:count、longSum、doubleSum、doubleMin\doubleMax、longMin\longMax、
doubleFirst\doubleLast、longFirst\longLast
//除count外其他都需要指定name和fieldName两个参数,name表示最后输出的,也就是在表中体现
的名称,而fieldName则代表源数据中的列名。
//更多说明参考:http://druid.io/docs/0.10.1/querying/aggregations.html
//示例:
"metricsSpec":
[
{"type":"count","name":"count"},
{"type":"doubleSum","name":"added","fieldName":"added"},
{"type":"doubleSum","name":"deleted","fieldName":"deleted"},
{"type":"doubleSum","name":"delta","fieldName":"delta"}
]
//数据摄取模式
"dataSchema": {
// 数据源(表),数据源名称,用于设置上传数据之后的表名称
"dataSource": "testdata",
// 解析器,用于指定数据怎么被转化,转化为什么格式
"parser": {
// 解析字符串文本
"type": "String",
"parseSpec": {
// 字符串文本格式为JSON
"format": "json",
// 指定维度列名,维度与时间一致,导入时聚合
"dimensionsSpec": {
"dimensions": [
"city",
"platform"
]
},
// 指定时间戳的列,以及时间戳格式化方式
剩余10页未读,继续阅读
资源评论
一瓢一瓢的饮alanchanchn
- 粉丝: 2875
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功