Flume学习06 — SDK

除了Flume内置的客户端,我们也可以自定义客户端向Flume发送数据。目前Flume支持自定义客户端通过Avro、Thrift、Log4j、Syslog和HTTP POST(JSON格式)发送的数据。客户端发送的数据必须是Flume能够识别的Event格式。

Flume SDK是一个提供Flume连接和向Flume发送数据(通过RPC)的类库。Flume SDK封装了底层的细节,只提供了统一接口,包括Flume连接、Event封装和Event发送等。Flume SDK可以通过Maven方式引用到项目中。

<dependency>
    <groupId>org.apache.flume</groupId>
    <artifactId>flume-ng-sdk</artifactId>
    <version>1.6.0</version>
</dependency>


Event

Event有两个实现类SimpleEvent和JSONEvent。JSONEvent发送JSON格式数据,主要由HTTP Source接收。SimpleEvent和JSONEvent在使用上并没有区别。可以通过EventBuilder的静态方法创建Event,EventBuilder默认创建SimpleEvent。

Event示例代码

String logBody = "这里是日志内容";

// 日志头文件,头文件是可选的
Map<String, String> logHeaders = new HashMap<String, String>();                     
// 给日志添加时间戳
logHeaders.put("timestamp", System.currentTimeMillis() + "");                       

// SimpleEvent
Event simpleEvent = new SimpleEvent();
simpleEvent.setBody(logBody.getBytes());
simpleEvent.setHeaders(logHeaders); // 头文件是可选的

// JSONEvent
Event jsonEvent = new JSONEvent();
jsonEvent.setBody(logBody.getBytes());
jsonEvent.setHeaders(logHeaders); // 头文件是可选的

// EventBuilder
EventBuilder.withBody(logBody.getBytes());
EventBuilder.withBody(logBody.getBytes(), logHeaders);


RpcClient

Flume连接和Event发送由RpcClient接口提供,RpcClient有两个基本实现类NettyAvroRpcClient和ThriftRpcClient,分别使用Avro协议和Thrift协议。RpcClient可以通过静态方法RpcClientFactory.getInstance(),getInstance有多个重载方法,如果不指定协议类型,默认使用Avro协议。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值