spark-shell读取hbase中的数据

启动hbase集群

start-hbase.sh

进入hbase客户端

hbase shell

创建表

create 'student','info'

插入数据

put 'student','1','info:id','001'
put 'student','1','info:name','Mary'
put 'student','1','info:age','18'
put 'student','1','info:sex','girl'

启动spark-shell

前置条件

cp ${HBASE_HOME}/lib/hbase*.jar ${SPARK_HOME}/jars
cp ${HBASE_HOME}/lib/hbase*.jar ${SPARK_HOME}/jars
cp ${HBASE_HOME}/lib/htrace-core-3.1.0-incubating.jar ${SPARK_HOME}/jars
cp ${HBASE_HOME}/lib/protobuf-java-2.5.0.jar ${SPARK_HOME}/jars
cp ${HBASE_HOME}/lib/metrics-core-3.2.6.jar ${SPARK_HOME}/jars

启动spark-shell并输入以下代码

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase._
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
val conf = HBaseConfiguration.create()
//设置查询表名
conf.set(TableInputFormat.INPUT_TABLE, "Student")
val stuRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase.client.Result])
val count = stuRDD.count()
println("Students RDD Count:" + count)
stuRDD.cache()
//遍历输出结果
stuRDD.foreach({ case (_,result) =>;
val key = Bytes.toString(result.getRow);
val id = Bytes.toString(result.getValue("info".getBytes,"id".getBytes));
val name = Bytes.toString(result.getValue("info".getBytes,"name".getBytes));
val academy = Bytes.toString(result.getValue("info".getBytes,"academy".getBytes));
val major = Bytes.toString(result.getValue("info".getBytes,"major".getBytes));
val phone = Bytes.toString(result.getValue("info".getBytes,"phone".getBytes));
println("Row key:"+key+" id:"+id+" name:"+name+" academy:"+academy+" major:"+major+" phone"+phone)})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值