flume开发--自定义Sink

kafka可以通过自定义Sink的方式实现数据搜集并写入各种LOTP数据库,下面的例子是通过自定义Source实现数据写入分布式K-V数据库Aerospike.

1. 自定义Sink代码如下
package kafka_sink.asd;

import java.io.IOException;
import java.net.ConnectException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.flume.Channel;
import org.apache.flume.Constants;
import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.EventDeliveryException;
import org.apache.flume.Transaction;
import org.apache.flume.conf.Configurable;
import org.apache.flume.sink.AbstractSink;
import com.aerospike.client.AerospikeException;
import com.aerospike.client.Bin;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
import com.aerospike.client.async.AsyncClient;
import com.aerospike.client.listener.RecordListener;
import com.aerospike.client.listener.WriteListener;
import com.aerospike.client.policy.WritePolicy;
import com.aerospike.client.async.AsyncClientPolicy;
import com.aerospike.client.policy.Policy;
import com.aerospike.client.Host;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Asdsink extends AbstractSink implements Configurable {
  //private String myProp;
  public static final String TOPIC_HDR = "topic";
  public static final String KEY_HDR = "key";
  //private String mz_tag_topic;
  //private AerospikeClient asd_client;
  private String ASD_HOST1;
  private String ASD_HOST2;
  private int ASD_PORT;
  private String ASD_NAME_SPACE = "cm";
  private String MZ_SET_NAME;
  private String MZ_BIN_NAME;
  private int batchSize;// 一次事务的event数量,整体提交
  private WritePolicy write_policy;
  private Policy policy;
  //Async Read and Write
  private AsyncClient asd_async_client;
  private AsyncClientPolicy async_client_policy;
  private boolean completed;


  @Override
  public void configure(Context context) {
    //String myProp = context.getString("myProp", "defaultValue");

    // Process the myProp value (e.g. validation)

    // Store myProp for later retrieval by process() method
    //this.myProp = myProp;
	ASD_HOST1 =  context.getString("asd_host1", "127.0.0.1");
	ASD_HOST2 =  context.getString("asd_host2", "127.0.0.1");
	ASD_PORT =  context.getInteger("asd_port",3000);
	SET_NAME = context.getString("set_name", "xxx");
	BIN_NAME = context.getString("bin_name", "xxx");
	batchSize = context.getInteger("batchSize",1000);
	System.out.printf("ASD_HOST1:%s\n",ASD_HOST1);
	System.out.printf("ASD_HOST2:%s\
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值