HBaseSink测试模块

//输入数据的样例类
case class Stu(id:Int,name:String,course:String,score:Int)
object HBseSinkTestStudent {

def main(args: Array[String]): Unit = {
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)

val ds: DataStream[String] = env.readTextFile("input/stu.txt")

val dataStr: DataStream[Stu] = ds.map(x => {
  val dar: Array[String] = x.split(" ")
  Stu(dar(0).toInt, dar(1), dar(2),dar(3).trim.toInt)
})
dataStr.addSink(new MyHBaseSink())
//执行
env.execute()

}
}
class MyHBaseSink() extends RichSinkFunction[Stu]{
//创建链接
var conn:Connection = _
//创建BufferedMutator
//实现批量异步操作
var mutator:BufferedMutator = null
//初始化
override def open(parameters: Configuration): Unit = {
//创建配置文件
val config: conf.Configuration = HBaseConfiguration.create()
//设置zookeeper主机名
config.set(HConstants.ZOOKEEPER_QUORUM,“spark1,spark2,spark3”)
//设置端口号
config.set(HConstants.ZOOKEEPER_CLIENT_PORT,“2181”)
//传入配置
conn = ConnectionFactory.createConnection(config)

val tname: TableName = TableName.valueOf("stu")

val params = new BufferedMutatorParams(tname)
//一批写入需要用,放入1兆的数据

// params.writeBufferSize(1024*1024)
mutator = conn.getBufferedMutator(params)

}
//数据处理
override def invoke(value: Stu, context: SinkFunction.Context[_]): Unit = {
val family = “info”
val put = new Put(Bytes.toBytes(value.id.toString))
put.addColumn(Bytes.toBytes(family),Bytes.toBytes(“name”),Bytes.toBytes(value.name))
put.addColumn(Bytes.toBytes(family),Bytes.toBytes(“course”),Bytes.toBytes(value.course))
put.addColumn(Bytes.toBytes(family),Bytes.toBytes(“score”),Bytes.toBytes(value.score))
mutator.mutate(put)
}

override def close(): Unit = {
mutator.close()
conn.close()
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值