创建conf和table var tableName = "httpsystem_dev" val conf= HBaseConfiguration.create() //设置要查询的表 conf.set...], classOf[org.apache.hadoop.hbase.client.Result]) 返回的数据是一个ImmutableBytesWritable,和一个result组成的二元组...DLCNN_juge_mal")) scan.addColumn(Bytes.toBytes("0"), Bytes.toBytes("DLCNN_juge_type")) //spark读取hbase...","slave5,slave6,slave7"); conf.set("hbase.zookeeper.property.clientPort","2181"); conf.addResource(".../home/hadoop/data/lib/hbase-site.xml"); val table = new HTable(conf,"data"); table.setAutoFlush(false
上一篇博客说了使用 HBase 的客户端 API 来操作管理 HBase 中的表,今天我们看看怎样通过 API 来操作表中的数据。...介绍 在 HBase 中对数据表中的数据的操做我们一般是通过 Table, Put, Get, Delete,Scan,Result等几个类来实现。...Table 是表对象,对应数据库中的一张表,我们可以在表上执行添加,修改,删除和查询操作。 Put 主要是用了对数据表中的记录执行写入/更新操作。 Get 主要是用了对数据表中的记录执行查询操作。...Delete 主要是用了对数据表中的记录执行查询操作。 Scan 用来在数据表中执行查询操作。 Result 用来保存查询的结果记录。...数据填充完后,在表上执行put操作。 最后,不要忘了关闭表。
因为是关联表,所以要进行视图映射,而不是直接去创建表,因为这样删除你创建的表,hbase的表也会受损,所以用视图是一个很好的方法,建表语句如下: create view "data"."...hydrogen_factory_data";//删除语句 data是已经存在的表的命名空间,hydrogen_factory_data带引号是因为之前创建的表是小写的,hydrogen_factory_data...必须和你建的表名字一样,否则映射不了,“FAC”."
Hbase(五): JavaApi操作Hbase 依赖 org.apache.hbase org.apache.hbase hbase-server</artifactId...版本一致 Hbase版本可以通过连接Hbase client使用version命令查看 定义静态配置变量 public static Configuration conf; static{ conf...可以定义成静态变量方便使用 需要注意的是需要在本地做主机ip映射,mac的hostname文件在etc目录下 创建表 //创建表 @Test public void createTable() throws...System.out.println(str); i++; } table.close(); } 删除数据 /** * 删除表数据
HTableInterface table = null; try { table = hTablePool.getTable(tableName) ;//针对哪张表操作...admin.deleteTable(tableName);// 删除表 System.err.println("删除表成功!")...", "node05"); admin = new HBaseAdmin(conf);//通过admin对象操作DDL语言 htable = new HTable...(conf, TN);//通过Htable对象操作表DML语言 } @After public void end() throws Exception {...--> 取并集 相当于or 操作 FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ONE);
Hbase(二):Hbase常用操作 常用shell命令 hbase shell命令 描述 alter 修改列族(column family)模式 count 统计表中行的数量 create 创建表 describe...使表有效 exists 测试表是否存在 exit 退出hbase shell get 获取行或单元(cell)的值 incr 增加指定表,行或列的值 list 列出hbase中存在的所有表 put 向指向的表单元添加值...tools 列出hbase所支持的工具 scan 通过对表的扫描来获取对用的值 status 返回hbase集群的状态信息 shutdown 关闭hbase集群(与exit不同) truncate 重新创建指定表...version 返回hbase版本信息 操作 创建表 不指定版本信息 create ‘表名’,‘列族’,’…’,’… 指定版本信息为3 create ‘表名’,{NAME=>‘列族’,VERSIONS...让表失效 disable ‘表名’ 删除表 drop ‘表名’
HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表结构 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式...HBase的处理方式 HBase的表结构 建表时要指定的是:表名、列族 建表语句 create 'user_info', 'base_info', 'ext_info' 意思是新建一个表,名称是user_info...: row key base_info ext_info row1 name:a, tel:123 row2 name:b addr:bj HBase表中还有一个重要概念:版本,每个字段的值都有版本信息...插入数据的过程可以看出 HBase 存储数据的特点了 和关系数据库一样,也是使用行和列的结构 建表时,定义的是表名和列族(字段的集合),而不是具体字段 列族中可以包含任意个字段,字段名不需要预定义,每一行中同一列族中的字段也可以不一致...多维结构,关系数据库的表是二维的,通过指行、列定位一个数据,HBase中需要通过 行健、列族名、字段名、版本号才能定位到具体数据 插入数据时,一次插入一个字段的数据,不是像关系数据库那样一次插入多个字段
# HBase数据操作 put delete 数据查询 get scan 数据统计 # put 语法 put '表名','行键','列族:列限定符','单元格值',时间戳 描述 必须指定表名、行键...只能插入单个数据 描述:如果指定的单元格已经存在,则put操作为更新数据; 单元格会保存指定VERSIONS=>n的多个版本数据 # delete 语法 delete '表名','行键','列族...', 描述:必须指定表名、行键和列族,列限定符和时间戳是可选参数; delete最小删除粒度为单元格,且不能跨列族删除 注意 delete操作并不会马上删除数据,只是将对应的数据打上删除标记...' hbase(main):004:0> count ‘student’ 3 row(s) in 0.0440 seconds 在关系型数据库中,有多少条记录就有多少行,表中的行数很容易统计。...而在 HBase 里,计算逻辑行需要扫描全表的内容,重复的行键是不纳入计数的,且标记为删除的数据也不纳入计数。
每张表至少要有一个列簇,因此我们创建了info,现在,看看我们的表,执行下面list命令: list ? 通过describe命令得到表的更多信息: ?...Describe命令返回表的详细信息,包括列簇的列表,这里我们创建的仅有一个:info,现在为表添加以下数据,下面命令是在info中添加新的行: put 'PageViews', 'rowkey1',...我们不能查询本身,但是我们可以对表进行scan操作,如果你执行scan table命令,它会返回表中所有行,这很有可能不是你想要做的。...disable 'tableName' --disable表。注:修改表结构时,必须要先disable表。...enable 'tableName' --使表可用 drop 'tableName' --删除表
首先要在jvm上开启hbase服务 并且在jvm上的9090端口开启thrift服务:hbase thrift start-port:9090 ?...happybase库:pip3 install happybase 建立py文件: import happybase hostname = 'xx.xx.xx.xx' table_name = 'hbase_test...row_key = 'California' conn = happybase.Connection(hostname) host_name写你的虚拟机的ip地址,用connection方法去连接你的虚拟机的Hbase...查看自己的Hbase数据库证实成功 ?
(离线备份) 直接备份HDFS数据,备份前需要disable表,在备份完成之前 服务不可用对在线服务类业务不友好 (二)CopyTable(热备) 执行命令前,需要创建表,支持时间区间、row区间,改变表名称...四,Replication(实时) 通过Hbase的replication机制实现Hbase集群的主从模式实时同步 五,Snapshot(备份实时,恢复需要disable) 个人觉得这里备份里面最经济划算的一个...,可以每天在固定时间点对hbase表数据进行快照备份,然后如果出现问题了,可以直接恢复到某个时间点上的数据,适合修复指标计算错误的场景,然后从某个时间点上重新修复。...snapshot create -n test_snapshot -t test (4)查看快照 list_snapshots (5)导出到HDFS hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot...时间短,体积小,恢复快,最终还可以恢复数据到一张新表中,不影响原来的表。
我们可以通过 hbase-client 来实现 HBase 数据库的操作。所以,这次主要介绍该组件的基本用法。...在使用 hbase-client 之前,有几个要点需要注意: 客户端需要能访问 Zoopkeeper,再获得 HMaster、RegionServer 实例进行操作 客户端需运行在HBase/Hadoop...(IOException e) { throw new RuntimeException(e); } } 四、表操作 增删改查方法封装如下: /** * 创建表 * @param...tableName); logger.info("删除表 {}", tableName.getNameAsString()); logger.info("操作完成.")...DeviceState INFO -main(HBaseTest.java:55) - 操作完成.
/stop-hbase.sh 建立表 create 'member','m_id','address','info' ####查看表描述 hbase(main):028:0> describe 'member...' ####can浏览表中数据 scan 'member' ####删除表 用drop命令可以删除表。...在删除一个表之前必须先将其禁用。...“regex”表。...清空表内数据 truncate 'FaceBase'【表名】 增加columns disable '表名' alter '表明', NAME => '列名', VERSIONS =>3 enable '
Column(列) 建表时无需指定,添加数据时可以自动增删 cell(单元) 如何锁定HBase中的一条数据?...基本命令 #建立集群连接 start-hbase.sh #创建客户端连接 hbase shell #查看状态 status #获取帮助 help #查看版本 version #创建person表(规定指定一个列族...可以管理个HRegion HRegionServer和datanode部署在同一个节点 HRegionServer的构造 a.WAL(write ahead log) HBase在进行写操作的时候会将写操作先记录到...执行读写操作。...(不同版本的读写操作不同,此为0.96之后的版本)
进程按角色分为Master和RegionServer,其中Master负责DDL操作,比如建表、删表,而RegionServer负责DML操作,比如数据的读写操作等。...从数据视图上讲,HBase中的Table会按Range切分为多个Region,然后由不同的RegionServer来负责对外提供服务。...HBase表在HDFS上的目录结构 [img] /hbase /data / (集群里的Namespaces)...HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile。...[img] Hbase UI 60010展示表结构如下 [img] [img] HLog的HDFS目录结构如下 /hbase /WALs / (
HBase的rowkey设计可以说是使用HBase最为重要的事情,直接影响到HBase的性能,常见的RowKey的设计问题及对应访问为: Hotspotting 的行由行键按字典顺序排序,这样的设计优化了扫描...下面的例子说明了salting能在多个RegionServer间分散负载,同时也说明了它在读操作时候的负面影响。 假设行键的列表如下,表按照每个字母对应一个region来分割。...从这个角度上看,salting增加了写操作的吞吐量,却也增大了读操作的开销。 Hashing 可用一个单向的 hash 散列来取代随机指派前缀。...因此,尽管有着连续的数据输入流,Put操作依旧能被分散在表中的各个region中 简化行和列 在HBase中,值是作为一个单元(Cell)保存在系统的中的,要定位一个单元,需要行,列名和时间戳。...表内[key]的最近的值可以用[key]进行Scan,找到并获取第一个记录。由于HBase行键是排序的,该键排在任何比它老的行键的前面,所以是第一个。
utm_content=m_31236 hbase中的宽表是指很多列较少行,即列多行少的表,一行中的数据量较大,行数少;高表是指很多行较少列,即行多列少,一行中的数据量较少,行数大。...据此,在HBase中使用宽表、高表的优劣总结如下: 查询性能:高表更好,因为查询条件都在row key中, 是全局分布式索引的一部分。高表一行中的数据较少。...分片能力:高表分片粒度更细,各个分片的大小更均衡。因为高表一行的数据较少,宽表一行的数据较多。HBase按行来分片。 元数据开销:高表元数据开销更大。...过大的元数据开销,可能引起HBase集群的不稳定、master更大的负担(这方面后续再好好总结)。 事务能力:宽表事务性更好。...而且解压缩可以通过协处理器(coproesssor)在HBase服务器上做,而不是在业务应用的服务器上做,以充分应用HBase集群的CPU能力。
,否则监控可用性降低,由于之前环境是由docker-compose部署,查到hbase可以修改表的ttl来清理数据,目前进入pinpoint-hbase容器操作,如果能在hbase表格生成时就修改ttl...效果会更佳,该方法需要熟悉docker-compose里面pinpoint-web及pinpoint-hbase部署方法,后期跟进 操作步骤 查找出数据大的hbase表 root@990fb5560f64...stop-hbase.cmd hbase-common.sh master-backup.sh stop-hbase.sh hbase-config.cmd region_mover.rb...修改表ttl root@990fb5560f64:/opt/hbase/hbase-1.2.6/bin# ....(main):012:0> major_compact 'ApplicationTraceIndex' 0 row(s) in 0.3740 seconds 备注 major_compact的操作目的
分布式数据库HBase开发: Java API 管理表 javaAPI获取表的列表 修改表 禁用表,启用表,删除表 前言: 第一关用一个foreach遍历,输出三行代码就行。....*; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util....*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.io.compress.Compression;....*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.*; public class Task...{ /** * 刪除表 * @param tableName 表名 * @throws Exception */ public void deleteTable(String tableName
网上的教程是Java操作hbase的实例,我这里使用python,所以之后的文章都是通过thrift API操作hbase 1、安装apache thrift(根据自己系统选择安装) http...验证thrift是否正确安装,输入命令:thrift –help查看帮助信息即可. 2、Thrift API 在网上很多人说在hbase根目录下存在Hbase.thrift文件,但是我没有找到,.../org/apache/hadoop/hbase/thrift/Hbase.thrif 然后把生成的gen-py文件夹下的hbase文件夹,拷贝到python的包路径下(site-packages)...后期修改:发现这个包生成的hbase包已经不能用了,需要使用pip安装hbase-thrift即可。...3、测试 1 开启thrift服务: hbase thrift start 2 编写python程序,操作数据库 # coding=utf-8 from thrift.transport.TSocket
领取专属 10元无门槛券
手把手带您无忧上云