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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接 FlinkHBase 可以通过 HBase Connector for Flink 实现。这个 Connector 提供了使用 HBase 作为 Flink 流处理应用程序的数据源和数据接收器的功能。 下面是连接 HBase 的步骤: 1. 在 Flink 项目中引入以下 Maven 依赖: ```xml <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-hbase_2.11</artifactId> <version>${flink.version}</version> </dependency> ``` 2. 创建一个 HBaseConfiguration 对象并配置 HBase连接信息: ```java Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "localhost"); conf.set("hbase.zookeeper.property.clientPort", "2181"); ``` 3. 使用 HBaseTableSource 和 HBaseTableSink 来创建 Flink 流处理应用程序的数据源和数据接收器: ```java // 创建 HBaseTableSource HBaseTableSource hbaseTableSource = new HBaseTableSource( new HBaseTableSchema(), // HBase 表模式 "table1", // HBase 表名 "f1", // 列族名 "rowkey", // 行键名 "cf1", // 列名 "col1", // 列限定符名 conf // HBase 配置信息 ); // 创建 HBaseTableSink HBaseTableSink hbaseTableSink = new HBaseTableSink( new HBaseTableSchema(), // HBase 表模式 "table1", // HBase 表名 "f1", // 列族名 "rowkey", // 行键名 "cf1", // 列名 "col1", // 列限定符名 conf // HBase 配置信息 ); ``` 4. 将 HBaseTableSource 和 HBaseTableSink 与 Flink 流处理应用程序的数据流进行关联: ```java // 读取数据 DataStream<Row> rows = env.createInput(hbaseTableSource); // 处理数据 DataStream<Row> processedRows = rows.map(row -> { // TODO: 处理数据 return row; }); // 写入数据 processedRows.addSink(hbaseTableSink); ``` 这样,Flink 就可以与 HBase 进行连接了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值