分享

Spark读取hbase报错

高帝斯法则 发表于 2014-10-9 09:44:43 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 14 28251
高帝斯法则 发表于 2014-10-9 15:18:52
本帖最后由 高帝斯法则 于 2014-10-9 15:20 编辑
desehawk 发表于 2014-10-9 10:16
把hosts,hostname,程序,用的语言,等信息贴出来看看

hosts中的节点配置如下:
192.168.63.101 Master1.Hadoop
192.168.63.102 Master2.Hadoop
192.168.63.103 TSlave1.Hadoop
192.168.63.104 TSlave2.Hadoop
192.168.63.105 TSlave3.Hadoop

程序如下:
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
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.util.Base64;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.solr.util.IOUtils;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaSparkContext;

import scala.Tuple2;

public class SparkHBase {

        public static void main(String[] args) throws Exception {
                JavaSparkContext context = new JavaSparkContext("spark://Master1.Hadoop:7077","SparkHBase","/home/spark",new String[]{"hbase-client.jar","hbase-common.jar","hbase-server.jar","hbase-protocol.jar"});

                Configuration conf = HBaseConfiguration.create();
                Scan scan = new Scan();

                scan.addFamily(Bytes.toBytes("info"));
                scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"));

                String tableName = "user";
                conf.set(TableInputFormat.INPUT_TABLE, tableName);


                ClientProtos.Scan proto = ProtobufUtil.toScan(scan);
                String scanStr = Base64.encodeBytes(proto.toByteArray());
                conf.set(TableInputFormat.SCAN, scanStr);

                JavaPairRDD<ImmutableBytesWritable, Result> hBaseRDD = context
                                .newAPIHadoopRDD(conf, TableInputFormat.class,
                                                ImmutableBytesWritable.class, Result.class);

                Long count = hBaseRDD.count();
                System.out.println("count: " + count);
        }
}
程序很简单,就是为了测试下,相关的jar包都已导入进去,hbase-site.xml,hdfs-site.xml和core-site.xml放在src目录下了。
回复

使用道具 举报

sstutu 发表于 2014-10-9 15:41:54
配置文件,在程序中都没有设置
  1. SparkConf sparkConf = new SparkConf();  
  2.         sparkConf.setMaster("spark://centos.host1:7077");  
  3.         sparkConf.setAppName("Spark HBase");  
  4.         JavaSparkContext context = new JavaSparkContext(sparkConf);  
  5.   
  6.         Configuration conf = HBaseConfiguration.create();  
  7.         conf.set("hbase.zookeeper.property.clientPort", "2181");  
  8.         conf.set("hbase.zookeeper.quorum", "centos.host1");  
  9.         conf.set("hbase.master", "centos.host1:60000");  
复制代码



按照自己的实际情况,修改下。

回复

使用道具 举报

InSight 发表于 2014-10-9 17:40:41

我是来看你如何解决问题的,多像你学习。学习的过程中难免会遇到解决不了的问题。相互学习。
回复

使用道具 举报

高帝斯法则 发表于 2014-10-10 08:23:16
回复

使用道具 举报

InSight 发表于 2014-10-10 08:42:51
高帝斯法则 发表于 2014-10-10 08:23
哈哈,我也是菜鸟而已啦,大家互相学习嘛

互相学习。
回复

使用道具 举报

12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条