spark联合hbase可以将hbase的数据转化为RDD数据,便于spark操作
如何使它们联合呢
直接编辑spark-env.sh这个文件即可
准备工作:
hadoop,hbase需要有被配置成环境变量
开始:
在spark-env.sh文件中添加 export SPARK_DIST_CLASSPATH=$(hadoop classpath):$(hbase classpath)
然后就bin/spark-shell 启动,然后写入一下内容:
import org.apache.spark._;
import org.apache.spark.rdd.NewHadoopRDD;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
val configuration = HBaseConfiguration.create(); //初始化配置
configuration.set("hbase.zookeeper.property.clientPort", "2181");
configuration.set("hbase.zookeeper.quorum", "localhost");
configuration.set("hbase.master", "localhost:60000");
configuration.addResource("/home/spark/app/hbase-0.96.2-hadoop2/conf/hbase-site.xml");
configuration.set(TableInputFormat.INPUT_TABLE, "pv");//连接到hbase的表
import org.apache.hadoop.hbase.client.HBaseAdmin;
val hadmin = new HBaseAdmin(configuration); //实例化hbase管理
使用hadoop api创建一个RDD
val hrdd = sc.newAPIHadoopRDD(configuration, classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
classOf[org.apache.hadoop.hbase.client.Result])
hrdd.take(1)
val a = hrdd.collect()
a.top(2)