前言:之前给大家分享了Spark通过接口直接读取HBase的一个小demo:HBase-Spark-Read-Demo,但如果在数据量非常大的情况下,Spark直接扫描HBase表必然会对HBase集群造成不小的压力。基于此,今天再给大家分享一下Spark通过Snapshot直接读取HBase HFile文件的方式。
首先我们先创建一个HBase表:test,并插入几条数据,如下:
hbase(main):003:0> scan 'test'
ROW COLUMN+CELL
r1 column=f:name, timestamp=1583318512414, value=zpb
r2 column=f:name, timestamp=1583318517079, value=lisi
r3 column=f:name, timestamp=1583318520839, value=wang
接着,我们创建该HBase表的快照,其在HDFS上路径如下:
hbase(main):005:0> snapshot 'test', 'test-snapshot'
0 row(s) in 0.3690 seconds
$ hdfs dfs -ls /apps/hbase/data/.hbase-snapshot
Found 1 items
drwxr-xr-x - hbase hdfs 0 2020-03-21 21:24 /apps/hbase/data/.hbase-snapshot/test-snapshot
代码如下:
import org.apache.hadoop.fs.Path
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase._
import org.apache.hadoop.mapreduce.Job
import org.apache.hadoop.