1. 原始数据实时ETL任务HBase调优
1.1 数据写入hbase优化
上一节写入数据,一条条数据put到表中,对于大量数据的写入,效率极低,因此针对此项进行优化
-
使用hbase客户端写缓存进行批量写入数据到hbase中
-
hbase客户端写缓存对象:BufferedMutator
hbase的每一次put操作写入数据,实际上是一个RPC操作,将客户端的数据传输到hbase服务器再返回结果,适合小数据量写入,当需要写入大量数据时,每一次put连接一次RPC连接,会增加连接次数,因此会增加传输时间和IO消耗
BufferedMutator通过mutate方法提交数据,flush方法可以强制刷新缓冲区提交数据,最后执行close方法也会刷新缓冲区
使用BufferedMutator数据写与直接写数据到hbase的区别:
- 写入步骤与第一节类似,这里针对hbase客户端写入数据方式进行优化
1.2 优化后的代码实现
-
自定义sink,继承RichSinkFunction类