zoukankan      html  css  js  c++  java
  • 实时事件统计项目:优化solr和morphline的时间字段

    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字段和时间字段如果是一个字段,则不能自己选择时间段。

    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}}}
        ]
      }
    ]

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Arli】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    C# 2010 从入门到精通 学习笔记3 第4章 使用决策语句
    C# 2010 从入门到精通 学习笔记2 第3章 方法和作用域
    C# 2010 从入门到精通 学习笔记1 第2章 使用变量、操作符和表达式
    SharePoint 2010 添加“我的链接”菜单
    SharePoint Survey WebPart 调查 Web部件
    SharePoint World Clock 世界时钟
    SharePoint Silverlight Clock 时钟
    SharePoint 文档导入工具
    如何在SharePoint2010中添加Deep Zoom Image
    计算并发和qps:
  • 原文地址:https://www.cnblogs.com/arli/p/6230361.html
Copyright © 2011-2022 走看看