sparkonhbase
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的更多相关文章
- Spark读写Hbase的二种方式对比
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...
- Spark-2.3.2 Java SparkSQL的自定义HBase数据源
由于SparkSQL不支持HBase的数据源(HBase-1.1.2),网上有很多是采用Hortonworks的SHC,而SparkSQL操作HBase自定义数据源大多数都是基于Scala实现,我就自 ...
随机推荐
- android 一步一步教你集成tinker(热修复)
这几天闲着没事,就看了下现在比较火的热修复,确实有了热修复就解决了android native的一个很尴尬问题,之前比起h5,android在用户体验上是有优势,但是过于复杂的版本更新,使用户烦不胜烦 ...
- 使用C#WebClient类访问(上传/下载/删除/列出文件目录)
在使用WebClient类之前,必须先引用System.Net命名空间,文件下载.上传与删除的都是使用异步编程,也可以使用同步编程, 这里以异步编程为例: 1)文件下载: static void Ma ...
- Linux 命令 统计进程数目
ps -efL | grep python | wc -l 此命令的意思是查看 Python的进程数目 ps -ef|grep python|grep -v grep|cut -c -|xargs k ...
- springboot 项目单元测试
项目结构如下 1 引入测试的 maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> & ...
- meterpreter命令大全
在其最基本的使用,meterpreter 是一个 Linux 终端在受害者的计算机上.这样,我们的许多基本的Linux命令可以用在meterpreter甚至是在一个窗口或其他操作系统. 这里有一些核心 ...
- JAVA中如何正确的用String转Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = sdf.parse( ...
- 史上最全PHP正则表达式实例汇总
收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(<a. ...
- 为你的网站加上SSL,可以使用HTTPS进行访问
首先,我们使用的是nginx 将域名证书文件1_www.domain.com_bundle.crt .私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/ngi ...
- 2-7-集合运算(A-B)∪(B-A)-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第2章 线性表 - 集合运算(A-B)∪(B-A) ——<数据结构>-严蔚敏.吴伟民版 ★有疑问先阅读★ 源码使用说明 链接☛☛☛ <数据结构-C语言 ...
- 乐观锁的一种实现方式—CAS
线程安全 众所周知,Java是多线程的.但是,Java对多线程的支持其实是一把双刃剑.一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题.线程安全性可能是非常复杂的,在没有充足的同 ...