import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.Result
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.hadoop.hbase.spark.HBaseContext
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession import org.apache.hadoop.hbase.NamespaceDescriptor
import org.apache.hadoop.hbase.TableName
import org.apache.hadoop.hbase.client._ import org.apache.hadoop.hbase.filter._
import org.apache.hadoop.hbase.io.compress.Compression
import org.apache.hadoop.hbase.util.Bytes
/**
* Created by lq on 2017/9/7.
*/
object spark2habse { }
object Sparkonhbase {
val spark=SparkSession.builder().appName("").master("").getOrCreate()
val sc=spark.sparkContext
val conf= HBaseConfiguration.create()
val habsecontext=new HBaseContext(sc,conf) def scanHbaseTB(tableName:String)(implicit startKey:Option[String],endKey:Option[String]):RDD[(ImmutableBytesWritable,Result)]={
//如果有StartRowKey根据提供查询
startKey match {
case Some(x)=>{
val scan=new Scan()
scan.setStartRow(Bytes.toBytes(x))
scan.setStopRow(Bytes.toBytes(endKey.getOrElse(x)))
val hbaeRDD=habsecontext.hbaseRDD(TableName.valueOf(tableName),scan)
hbaeRDD
}
case None=>{
val scan=new Scan()
val hbaeRDD=habsecontext.hbaseRDD(TableName.valueOf(tableName),scan)
hbaeRDD
}
} def main(args: Array[String]): Unit = {
//传统方式
conf.set(TableInputFormat.SCAN_ROW_START, "startrowkey")
conf.set(TableInputFormat.SCAN_ROW_STOP, "stoprowkey")
conf.set(TableInputFormat.INPUT_TABLE, "SparkHbase")
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result]) //利用HbaseContext进行操作
val SparkHbaseRDD=scanHbaseTB("SparkHbase")
SparkHbaseRDD.foreach(x=>{
val rowKey=x._1.toString
val rs=x._2
val cell=rs.getColumnLatestCell(Bytes.toBytes(""),Bytes.toBytes(""))
println(s"the rowKey is $rowKey the values is $cell")
}) } }
}
http://blog.csdn.net/UnionIBM/article/details/77850979 
     <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-spark</artifactId>
            <version>2.0.0-alpha2<ersion>
        </dependency>
这个是spark2.0里面的,低版本的只有cdh的依赖.

sparkonhbase的更多相关文章

  1. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  2. Spark-2.3.2 Java SparkSQL的自定义HBase数据源

    由于SparkSQL不支持HBase的数据源(HBase-1.1.2),网上有很多是采用Hortonworks的SHC,而SparkSQL操作HBase自定义数据源大多数都是基于Scala实现,我就自 ...

随机推荐

  1. android图片等比例缩放 填充屏幕

    在ImageView的t同事设置两个属性 android:adjustViewBounds="true"android:scaleType="fitXY"

  2. Win7系统计算机中Msvcr100.dll丢失的解决办法

    1.使用安全卫士里的人工服务. 在搜索框里输入msvcr100.dll. 点击查找方案. 2.点击msvcr100.dll问题后面的立即修复. 只要等待片刻就好了.

  3. 异步加载js文件的方法总结

    方法一,jQuery.getScript HTML 代码: 代码如下 复制代码 <button id="go">Run</button><div cl ...

  4. Codeforces Round #207 (Div. 1) B. Xenia and Hamming(gcd的运用)

    题目链接: B. Xenia and Hamming 题意: 要求找到复制后的两个字符串中不同样的字符 思路: 子问题: 在两串长度是最大公倍数的情况下, 求出一个串在还有一个串中反复字符的个数 CO ...

  5. C#基础课程之三循环语句

    for循环: ; i < ; i++) { Console.WriteLine("执行"+i+"次"); } while循环: while (true) ...

  6. Status bar and navigation bar appear over my view's bounds in iOS 7

    转自:http://stackoverflow.com/questions/17074365/status-bar-and-navigation-bar-appear-over-my-views-bo ...

  7. Ctex中WinEdt经常弹出注册小窗口 解决办法

    使用WinEdt 7避免跳出“注册对话框” 在options菜单下点options…,在advanced configuration  =>  Event Handlers  下点Exit, 在 ...

  8. django rest_framework入门五-认证和权限

    1.django User实体 django自带了用户验证模块,django/contrib/auth/models.py定义了用户实体,代码如下: class AbstractUser(Abstra ...

  9. Django model中的Class Meta

    1.Meta元数据 代码示例: class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta: # ... Meta ...

  10. 【驱动】Flash设备驱动基础·NOR·NAND

    Flash存储器 ——>Flash存储器是近几年来发展最快的存储设备,通常也称作闪存.Flash属于EEPROM(电可擦除可编程只读存储器),是一类存取速度很高的存储器. ——>它既有RO ...