实时事件统计项目:优化solr和morphline的时间字段
2016-12-28 17:40
330 查看
morphline优化,如下:
传过来的时间戳被复制到3个字段:eventTimeInMinuteChina_tdt ,eventTimeInMinuteUTC_tdt ,eventTimeInHourUTC_tdt 。
eventTimeInMinuteChina_tdt:用于显示以及按中国时间来指定查询范围。
eventTimeInMinuteUTC_tdt:用于匹配NOW/DAY-7DAYS TO NOW/DAY等时间格式。因为solr5以前的版本只支持UTC时区。
eventTimeInHourUTC_tdt:提升按小时范围查询的性能。可以给Hue的TimeLine功能使用。Hue的TimeLine字段和时间字段如果是一个字段,则不能自己选择时间段。
传过来的时间戳被复制到3个字段:eventTimeInMinuteChina_tdt ,eventTimeInMinuteUTC_tdt ,eventTimeInHourUTC_tdt 。
eventTimeInMinuteChina_tdt:用于显示以及按中国时间来指定查询范围。
eventTimeInMinuteUTC_tdt:用于匹配NOW/DAY-7DAYS TO NOW/DAY等时间格式。因为solr5以前的版本只支持UTC时区。
eventTimeInHourUTC_tdt:提升按小时范围查询的性能。可以给Hue的TimeLine功能使用。Hue的TimeLine字段和时间字段如果是一个字段,则不能自己选择时间段。
SOLR_LOCATOR : { # Name of solr collection collection : event_count_records # ZooKeeper ensemble #CDH的专有写法,开源版本不支持。 zkHost : "$ZK_HOST" } morphlines : [ { id : morphline1 importCommands : ["org.kitesdk.**", "org.apache.solr.**"] commands : [ { #Flume传过来的kafka的json数据是用二进制流的形式,需要先读取json readJson{} } { #读出来的json字段必须转换成filed才能被solr索引到 extractJsonPaths { flatten:true paths:{ account:/account accountName:/accountName subaccount:/subaccount subaccountName:/subaccountName eventTime:/timestamp eventType:/eventType eventTags:"/eventTags[]/name" #按UTC时间存timestamp eventTimeInMinuteUTC_tdt:/timestamp #按China时间存timestamp eventTimeInMinuteChina_tdt:/timestamp #按UTC时间存timestamp eventTimeInHourUTC_tdt:/timestamp #_tdt后缀会被动态识别为日期类型的索引字段 #按不同时间间隔存索引以增加查询性能 } } } #转换long型时间为Date格式 {convertTimestamp { field : eventTimeInMinuteChina_tdt inputFormats : ["unixTimeInMillis"] inputTimezone : UTC outputFormat : "yyyy-MM-dd'T'HH:mm:ss.SSS'Z/MINUTE'" outputTimezone : Asia/Shanghai }} {convertTimestamp { field : eventTimeInMinuteUTC_tdt inputFormats : ["unixTimeInMillis"] inputTimezone : UTC outputFormat : "yyyy-MM-dd'T'HH:mm:ss.SSS'Z/MINUTE'" outputTimezone : UTC }} {convertTimestamp { field : eventTimeInHourUTC_tdt inputFormats : ["unixTimeInMillis"] inputTimezone : UTC outputFormat : "yyyy-MM-dd'T'HH:mm:ss.SSS'Z/HOUR'" outputTimezone : UTC }} #kafka中的json数据传到flume中时会被放入_attachment_body字段,readJson后会变成JsonNode对象,需要toString之后才能保存 {toString { field : _attachment_body }} #为每一条记录生成一个UUID {generateUUID { field : id }} #对未定义的Solr字段加tws前缀,根据schema.xml中定义的tws_*为text_ws类型,会动态未未定义的字段建索引。 { sanitizeUnknownSolrFields { # Location from which to fetch Solr schema solrLocator : ${SOLR_LOCATOR} renameToPrefix:"tws_" } } #将数据导入到solr中 {loadSolr {solrLocator : ${SOLR_LOCATOR}}} ] } ]
相关文章推荐
- 实时事件统计项目:优化flume:用file channel代替mem channel
- cloudera search1.0.0环境搭建(2):利用flume-ng的MorphlineSolrSink实现近实时(NRT)搜索
- cloudera search1.0.0环境搭建(2):利用flume-ng的MorphlineSolrSink实现近实时(NRT)搜索
- cpu-hogs 的 systemtap 工具,可以实时统计某段时间内实际消耗掉的 CPU 时间在所有用户进程及内核线程之间的比例分布。
- android项目性能优化之启动时间
- 解决solr索引时间字段后比数据库里的值晚8小时
- 一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间
- 优化solr全量建索引,减少索引时间
- mysql数据库字段(ip地址,时间)优化
- SPCAMLEditor使用系列(3)--利用SPCamlEditor实现 时间字段跟当前时间进行实时比较计算
- sql优化:从设计表结构开始(SQL Server中如何让数据库中某一个字段随时间自动更新?)
- GridView控件常见问题及处理方法===1. 关于隐藏字段的处理:==2. 关于按钮列的事件:==3. 关于按钮的客户端提示:==4. 关于时间字段的格式化输出:==5. 关于绑定空记录:
- Kafka项目实战-用户日志上报实时统计之编码实践
- solr 空值查询和不包含子字段的数据统计
- 一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间
- 限制优化时间和事件数的最佳方法
- 使用Project统计项目实时进度
- SQL SERVER查询优化工具:统计SQL语句执行时间
- 一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间