hbase scala 实例_scala操作HBase2.0
在前面:
scala:2.12
hbase:2.0.2
开发工具:IDEA
准备工作:
1、将生产上的hbase中的conf/hbase-site.xml文件拷贝到idea中的src/resources目录下
2、将生产环境中hbase中的$HBASE_HOME/lib下的*.jar文件加载到IDEA中
3、点击libraries->中间的"+" ->java
4、选择jar包所放的位置,点击OK
5、继续点击ok即可
6、进行连接代码编写:
package spark._core
import java.io.IOException
import java.util.UUID
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase._
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.util.Bytes
import parquet.org.slf4j.LoggerFactory
/**
* Author Mr. Guo
* Create 2018/11/5 - 19:08
*/
object Operator_Hbase {
def LOG = LoggerFactory.getLogger(getClass)
def getHbaseConf: Configuration = {
val conf: Configuration = HBaseConfiguration.create
conf.addResource(".\\main\\resources\\hbase-site.xml")
conf.set("hbase.zookeeper.property.clientPort","2181")
/*conf.set("spark.executor.memory","3000m")
conf.set("hbase.zookeeper.quorum","master,slave1,slave2")
conf.set("hbase.master","master:60000")
conf.set("hbase.rootdir","Contant.HBASE_ROOTDIR")*/
conf
}
//创建一张表
@throws(classOf[MasterNotRunningException])
@throws(classOf[ZooKeeperConnectionException])
@throws(classOf[IOException])
def createTable(hbaseconn: Connection, tableName: String, columnFamilys: Array[String]) = {
//建立一个数据库操作对象
var admin: Admin = hbaseconn.getAdmin;
var myTableName: TableName = TableName.valueOf(tableName)
if (admin.tableExists(myTableName)) {
LOG.info(tableName + "Table exists!")
} else {
val tableDesc: HTableDescriptor = new HTableDescriptor(myTableName)
tableDesc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.AggregateImplementation")
for (columnFamily
val columnDesc: HColumnDescriptor = new HColumnDescriptor(columnFamily)
tableDesc.addFamily(columnDesc)
}
admin.createTable(tableDesc)
LOG.info(tableName + "create table success!")
}
admin.close()
}
//载入数据
def addRow(table: Table, rowKey: String, columnFamily: String, quorm: String, value: String) = {
val rowPut: Put = new Put(Bytes.toBytes(rowKey))
if (value == null) {
rowPut.addColumn(columnFamily.getBytes, quorm.getBytes, "".getBytes())
} else {
rowPut.addColumn(columnFamily.getBytes, quorm.getBytes, value.getBytes)
}
table.put(rowPut)
}
//获取数据
def getRow(table: Table, rowKey: String): Result = {
val get: Get = new Get(Bytes.toBytes(rowKey))
val result: Result = table.get(get)
for (rowKv
println("Famiily:" + new String(rowKv.getFamilyArray, rowKv.getFamilyOffset, rowKv.getFamilyLength, "UTF-8"))
println("Qualifier:" + new String(rowKv.getQualifierArray, rowKv.getQualifierOffset, rowKv.getQualifierLength, "UTF-8"))
println("TimeStamp:" + rowKv.getTimestamp)
println("rowkey:" + new String(rowKv.getRowArray, rowKv.getRowOffset, rowKv.getRowLength, "UTF-8"))
println("Value:" + new String(rowKv.getValueArray, rowKv.getValueOffset, rowKv.getValueLength, "UTF-8"))
}
return result
}
//批量添加数据
def addDataBatch(table: Table, list: java.util.List[Put]) = {
try {
table.put(list)
} catch {
case e: RetriesExhaustedWithDetailsException => {
LOG.error(e.getMessage)
}
case e: IOException => {
LOG.error(e.getMessage)
}
}
}
//查询全部
def queryAll(table: Table): ResultScanner = {
val scan: Scan = new Scan
try {
val s = new Scan()
val result: ResultScanner = table.getScanner(s)
return result
} catch {
case e: IOException => {
LOG.error(e.toString)
}
}
return null
}
//查询条记录
def queryBySingleColumn(table: Table, queryColumn: String, value: String, columns: Array[String]): ResultScanner = {
if (columns == null || queryColumn == null || value == null) {
return null
}
try {
val filter: SingleColumnValueFilter = new SingleColumnValueFilter(Bytes.toBytes(queryColumn),
Bytes.toBytes(queryColumn),CompareOp.EQUAL,new SubstringComparator(value))
val scan: Scan = new Scan()
for (columnName
scan.addColumn(Bytes.toBytes(columnName), Bytes.toBytes(columnName))
}
scan.setFilter(filter)
return table.getScanner(scan)
} catch {
case e: Exception => {
LOG.error(e.toString)
}
}
return null
}
//删除表
def dropTable(hbaseconn: Connection, tableName: String) = {
try {
val admin: HBaseAdmin = hbaseconn.getAdmin.asInstanceOf[HBaseAdmin]
admin.disableTable(TableName.valueOf(tableName))
admin.deleteTable(TableName.valueOf(tableName))
} catch {
case e: MasterNotRunningException => {
LOG.error(e.toString)
}
case e: ZooKeeperConnectionException => {
LOG.error(e.toString)
}
case e: IOException => {
LOG.error(e.toString)
}
}
}
def main(args: Array[String]): Unit = {
val conf: Configuration = getHbaseConf
val conn = ConnectionFactory.createConnection(conf)
//定义表名称
val table:Table = conn.getTable(TableName.valueOf("test"))
try {
//列族fam1,fam2
val familyColumn:Array[String] = Array[String]("info1","info2")
//建表
// createTable(conn,"test",familyColumn)
val uuid:UUID = UUID.randomUUID()
val s_uuid:String = uuid.toString
//载入数据
// addRow(table,s_uuid,"info","column1A",s_uuid+"_1A")
//获取表中所有数据
// getRow(table,"9ec78ac4-6042-4c34-8862-f5aca3e")
//删除表
// dropTable(conn,"test")
}catch{
case e:Exception => {
if (e.getClass == classOf[MasterNotRunningException]){
System.out.println("MasterNotRunningException")
}
if (e.getClass == classOf[ZooKeeperConnectionException]){
System.out.println("ZooKeeperConnectionException")
}
if (e.getClass == classOf[IOException]){
System.out.println("IOException")
}
e.printStackTrace()
}
}finally{
if (null != table){
table.close()
}
}
}
}
7、实际操作的过程中可能会遇到如下问题:
解决方案:
双击打开该文件,找到标签 , 在标签里加一行
保存即可
hbase scala 实例_scala操作HBase2.0相关推荐
- HBase技术与应用实践 | HBase2.0重新定义小对象实时存取
本次分享来自中国HBase技术社区第七届MeetUp成都站,分享嘉宾天引 阿里巴巴 技术专家专注在大数据领域,拥有多年分布式.高并发.大规模系统的研发与实践经验,先后参与HBase.Phoenix.L ...
- Hadoop2.7.2 HBase2.0.0环境搭建
集群配置 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. 一.基础环 ...
- Windows安装HBase2.0.0(单机版)
Windows安装HBase2.0.0(单机版) 说明 准备工作 配置windows hosts文件,配置服务器IP和名称 查看HBase和hadoop版本对照关系 下载安装jdk1.8+ 下载安装 ...
- 2021年大数据HBase(二):HBase集群安装操作
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...
- Hbase2.0版本安装教程
目录: 前言: 1. 上传 2. 解压 3. 重命名 4. 修改环境变量 5. 修改配置文件 6. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下 ...
- 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线
摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧 ...
- 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线 1
一.HBase2.0和阿里云的前世今生 ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! ApsaraDB for HBase2.0是基于社区HBase2.0稳定版的 ...
- Hbase-2.0.5
大数据之Hbase-2.0.5 第1章 HBase简介 1.1 HBase定义 1.2 HBase数据模型 1.2.1 HBase逻辑结构 1.2.2 HBase物理存储结构 1.2.3 数据模型 1 ...
- 大数据技术之_11_HBase学习_03_HBase 实战之谷粒微博(练习API) + 扩展知识(布隆过滤器+HBase2.0 新特性)
大数据技术之_11_HBase学习_03 第8章 HBase 实战之谷粒微博 8.1 需求分析 8.2 代码实现 第9章 扩展知识 9.1 HBase 在商业项目中的能力 9.2 布隆过滤器 9.3 ...
最新文章
- python基础知识点-Python基础中的29个知识点
- twig模板引擎使用php,Twig模板引擎用法入门教程_PHP
- oracle appen,Oracle中关于insert中使用/*+append*/和nologging的总结
- 【玩转cocos2d-x之三十五】Earth Warrior 3D大揭秘
- CSS3 背景起始位置 background-origin属性
- Atitit.eclipse git使用
- Java 学习笔记之 Synchronized锁重入
- vim中 E212:无法打开并写入文件的解决办法
- 在下层捕获上层抛出的异常
- 金融销售关键在于客户感受
- 历史 微信开发者工具_微信开发者工具代码管理
- 初试牛刀的收获-freetextbox的应用
- oracle+bmp转为txt,Bmp2Txt下载-图像转换成文字(Bmp2Txt )下载1.0-西西软件下载
- 宝塔linux webshell提权,linux提权 Root权限WebShell提权
- darknetYolov3图片的分类计数、置信度以及输出xmin,xmax,ymin,ymax的结果
- 交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现(跟踪场景二)
- 入侵oracle数据库时常用的操作命令整理
- 操作系统上机随笔《实验三》
- 8赛道,64匹马找最快的8匹马
- Fiddler(三)- Fiddler命令行和HTTP断点调试
热门文章
- 【clickhouse】clickhouse 大表删除 Size 256G is greater than max_[table/partition]_size_to_drop 50GB
- 【Flink】FLink 提交报错 instead of minReplication (=1). There are 3 datanode(s) running and 3 node(s) are
- 源代码:spark-shell解读
- 【集合】Vector 是线程安全的?
- Spring:@Configuration和@Component的使用与区别
- scala学习-scala中的特殊符号使用
- int基本类型变成Integer包装类
- 深入分析 RestController 与 Controller 的区别,你真的了解吗?
- 推荐这款接口管理神器,集成了Swagger和postman,mock的功能
- 手写一个RPC框架,理解更透彻(附源码)