flink连接hbase的连接池_flink连接hbase方法及遇到的问题

packagemidas.knowbox;importorg.apache.flink.api.java.utils.ParameterTool;importorg.apache.flink.configuration.Configuration;importorg.apache.flink.streaming.api.functions.sink.RichSinkFunction;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.HColumnDescriptor;importorg.apache.hadoop.hbase.HTableDescriptor;importorg.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.*;importorg.apache.hadoop.hbase.util.Bytes;public class WriteHbaseRich extends RichSinkFunction{private Connection conn = null;private Table table = null;private staticString zkServer;private staticString zkPort;private staticTableName tableName;private static final String click = "click";

BufferedMutatorParams params;

BufferedMutator mutator;

@Overridepublic void open(Configuration parameters) throwsException {

ParameterTool para=(ParameterTool)

getRuntimeContext().getExecutionConfig().getGlobalJobParameters();

zkServer= para.getRequired("hbase.zkServer");

zkPort= para.getRequired("hbase.zkPort");

String tName= para.getRequired("hbase.tableName");

tableName=TableName.valueOf(tName);

org.apache.hadoop.conf.Configuration config=HBaseConfiguration.create();

config.set("hbase.zookeeper.quorum", zkServer);

config.set("hbase.zookeeper.property.clientPort", zkPort);

conn=ConnectionFactory.createConnection(config);

Admin admin=conn.getAdmin();

admin.listTableNames();if (!admin.tableExists(tableName)) {

HTableDescriptor tableDes= newHTableDescriptor(tableName);

tableDes.addFamily(new HColumnDescriptor(click).setMaxVersions(3));

System.out.println("create table");

admin.flush(tableName);

}//连接表

table =conn.getTable(tableName);//设置缓存

params = newBufferedMutatorParams(tableName);

params.writeBufferSize(1024);

mutator=conn.getBufferedMutator(params);

}

@Overridepublic void invoke(AdDot record, Context context) throwsException {

Put put= newPut(Bytes.toBytes(String.valueOf(record.userID)));

System.out.println("hbase write");

System.out.println(record.recent10Data);

put.addColumn(Bytes.toBytes(click),Bytes.toBytes("recent_click"),Bytes.toBytes(String.valueOf(record.toJson())));

mutator.mutate(put);

System.out.println("hbase write");

}

@Overridepublic void close() throwsException {

mutator.flush();

conn.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值