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();
}
}