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")
}) } }
}
<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实现,我就自 ...
随机推荐
- 解决『Manifest merger failed with multiple errors, see 』
Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multipl ...
- MySQL -- 全文检索(布尔全文检索)
modifier的值为in boolean mode的时候,可以使用布尔全文检索.在布尔全文检索中,有些字符在检索字符串的开头或结尾会有特殊含义.在下面的示例中,+和-操作符表明在匹配的时候,单词必须 ...
- Fix SCRIPT5009: “RegisterSod” undefined error
When I set up development environment for apps for SharePoint 2013 and quickly get apps from SharePo ...
- [转]Maven - 环境配置
Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 系统要求 项目 要求 JDK Maven 3.3 要求 JDK 1.7 或以上Maven 3.2 要求 JDK 1.6 ...
- nohup和& 区别
&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出 &的意思是在后台运行, ./a.out & 的时候, 即使你用ctrl C, 那么a.out ...
- springboot 与 mybatis 中事务特性讲解
1 MyBatis自动参与到 spring 事务管理中,无需额外配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与 DataSourceTrans ...
- struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性
有两种方式可以实现在Action中使用Servlet的API.一种是使用org.apache.struts2.ServletActionContext类,另一种是使用com.opensymphony. ...
- JDK1.7新特性,语言篇
1. 可以用二进制表达数字 可以用二进制表达数字(加前缀0b/0B),包括:byte, short, int, long // 可以用二进制表达数字(加前缀0b/0B),包括:byte, short, ...
- Android基础知识之String类使用详解
原文:http://android.eoe.cn/topic/android_sdk 字符串资源为你的应用程序提供了可以选择的文本样式和格式的文本.这里有三种类型的资源可以为你的应用程序提供字符串. ...
- [LintCode] Find the Connected Component in the Undirected Graph
Find the Connected Component in the Undirected Graph Find the number connected component in the undi ...