Apache druid 自定义组件开发

   最近因项目需要,需要开发Apache druid插件解析kafka推过来的流量,格式为protobuf,字段存储为二进制类型(注意,普通数据类型 druid已支持) ,废话不多说,上思路。

第一步:实现ByteBufferInputRowParser类 XXXParser,业务逻辑的实现在parsePatch()方法

第二步 :创建一个实现DruidModule 类  XXXThriftExtensionsModule, 在getJacksonModules里注册实现的Modle和Parser

第三步(重点):在资源文件下建立个service文件夹,下面建立一个文件,文件名称:org.apache.druid.initialization.DruidModule,否则apache druid加载不了插件,卡了很久蛋疼

记住路径一定是这样,用来加载插件的初始化,文件名称写上第二步创建的Module类,记住 全路径!!!

第四步:打包上传至安装路径extensions的下,记住名字ABC

第五步:修改配置文件  _common文件夹下的common.runtime.properties 文件,druid.extensions.loadList 加上ABC

第六步:如环境变量没配置,把生产的jar文件也丢一份至lib下即可

第七步:编写json,提交运行

编写json文件,提交supervisors,

给一份json文件,其中type是第二步注册NameType键值对中的值,具体如下图所示:

{
  "type": "kafka",
  "dataSchema": {
    "dataSource": "tabPncIptest",
    "parser": {
     "type": "pnc_agent",
      "parseSpec": {
        "format": "json",
         "timestampSpec": {
          "column": "timestamp",
          "format": "auto",
          "missingValue": "2020-04-22"
        },
        "dimensionsSpec": {
          "dimensions": [
                "agent_id",
                "conn_ip",
                "create_time",
        "proto",
        "src_addr",
        "src_port",
         ····
        "tid"
          ]
        }
      }
    },
   "granularitySpec": {
          "type": "uniform",
      "segmentGranularity": "HOUR",
          "queryGranularity": "HOUR"
    }
  },
  "ioConfig": {
    "topic": "xxxtopic",
    "replicas": 1,
    "taskCount": 2,
    "taskDuration": "PT3600S",
    "consumerProperties": {
      "bootstrap.servers": "xxx"
    }
  },
  "tuningConfig": {
    "type": "kafka",
    "maxRowsPerSegment": 8000000,
    "resetOffsetAutomatically": true
  }
}
提交json文件命令:

curl -XPOST -H'Content-Type: application/json' -d @xxx.json http://xxxIp/druid/indexer/v1/supervisor

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值