Spark读取HBase内容_Java

Spark读取Hbase中表名为bi_coupon,列簇(column family)为a,column为a,这样对Hbase中数据操作,可通过myRDD来进行,表结构如下:
Spark读取HBase内容_Java_第1张图片

/** * 文件名:Hbase.java * * 创建人:Sundujing - [email protected] * * 创建时间:2016年5月12日 下午4:32:03 * * 版权所有:Sundujing */
package com.dt.spark.SparkApps.cores;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
import org.apache.hadoop.hbase.util.Base64;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaSparkContext;
/** * [描述信息:说明类的基本功能] * * @author Sundujing - [email protected] * @version 1.0 Created on 2016年5月12日 下午4:32:03 */
public class Hbase {

    /** * 功能实现描述 * * @param args * @author: Sundujing - [email protected] * @date: Created on 2016年5月12日 下午4:32:03 */
    public static void main(String[] args) {

        SparkConf conf1 = new SparkConf();
        JavaSparkContext sc = new JavaSparkContext(conf1);

        Configuration conf = HBaseConfiguration.create();
        Scan scan = new Scan();
        scan.addFamily(Bytes.toBytes("a"));//column family

        scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("a"));

        try {

            String tableName = "bi_coupon";

            conf.set(TableInputFormat.INPUT_TABLE, tableName);

            ClientProtos.Scan proto = ProtobufUtil.toScan(scan);

            String ScanToString = Base64.encodeBytes(proto.toByteArray());

            conf.set(TableInputFormat.SCAN, ScanToString);
            JavaPairRDD<ImmutableBytesWritable, Result> myRDD = sc.newAPIHadoopRDD(conf, TableInputFormat.class,
                    ImmutableBytesWritable.class, Result.class);
            System.out.println(myRDD.count());
        } catch (Exception e) {

            e.printStackTrace();
        }

        sc.close();


    }

}

如果在非主节点node0运行,会出现如下错误
Spark读取HBase内容_Java_第2张图片

需在主节点node1上运行,运行结果如下:
Spark读取HBase内容_Java_第3张图片

你可能感兴趣的:(java,spark,hbase)