Spark DataFrame 写入 HBase 的常用方式
Spark 是目前最流行的分布式计算框架, 而 HBase 则是在 HDFS 之上的列式分布式存储引擎, 基于 Spark 做离线或者实时计算, 数据结果保存在 HBase 中是目前很流行的做法例如用户画像单品画像推荐系统等都可以用 HBase 作为存储媒介, 供客户端使用
因此 Spark 如何向 HBase 中写数据就成为很重要的一个环节了本文将会介绍三种写入的方式, 其中一种还在期待中, 暂且官网即可...
代码在 spark 2.2.0 版本亲测
1. 基于 HBase API 批量写入
第一种是最简单的使用方式了, 就是基于 RDD 的分区, 由于在 spark 中一个 partition 总是存储在一个 excutor 上, 因此可以创建一个 HBase 连接, 提交整个 partition 的内容
大致的代码是:rdd.foreachPartition{records=>
val config=HBaseConfiguration.create
config.set("hbase.zookeeper.property.clientPort","2181")
config.set("hbase.zookeeper.quorum","a1,a2,a3")
val connection=ConnectionFactory.createConnection(config)
val table=connection.getTable(TableName.valueOf("rec:user_rec"))
// 举个例子而已, 真实的代码根据 records 来
val list=newjava.util.ArrayList[Put]
for(i