bin/sqlline.py数据库安装服务器ip或主机名:zookeeper的服务端口号
上一篇博客说了怎样搭建HBase环境,今天说说怎样使用 HBase 的客户端 API 来操作 HBase 中的数据。 创建工程 首先创建一个 Maven 工程,然后添加hbase客户端api的依赖项,如下: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.0.0-alpha4</version> </dependency> 添加配置文件
private static Configuration configuration=null; static{ configuration= HBaseConfigurati
HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。
HBase 使用 Java 语言开发,因而 HBase 原生提供了一个 Java 语言客户端。这篇文章介绍 HBase Admin API,包括创建、启用、禁用、删除表等。如果项目使用 Maven 进行依赖管理,只需添加如下依赖即可以使用 Java 客户端访问 HBase 集群:
import java.io.IOException; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.util.Map; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.io.Writable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.util.*; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.util.Writables; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.MasterNotRunningException; //import org.apache.hadoop.hbase.ZooKeeperConnectionException; public class HBaseHandler { private static HBaseConfiguration conf = null; /** * 初始化配置 */ static { //conf = HBaseConfiguration.create(); conf = new HBaseConfiguration(); conf.addResource("hbase-site.xml"); } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub System.out.println("Helloworld"); String[] cfs; cfs = new String[1]; cfs[0] = "Hello"; createTable("Test",cfs); } /** * 创建表操作 * @throws IOException */ public static void createTable(String tablename, String[] cfs) throws IOException { HBaseAdmin admin = new HBaseAdmin(conf); if (admin.tableExists(tablename)) {
在之前的文章hdfs API学习中,我们已经能够成功连接hdfs,并对文件进行读写。hbase数据库的操作也非常简单,但你需要先大致了解一下hbase的架构。
(这里的方法在运行的时候要开启Hbase集群服务) 启动HBase 由于伪分布式下的 HBase 依赖 HDFS ,因此我们需要先启动 HDFS :
HBase索引主要用于提高Hbase中表数据的访问速度,有效的避免了全表扫描,HBase中的表根据行健被分成了多个Regions,通常一个region的一行都会包含较多的数据,如果以列值作为查询条件,就只能从第一行数据开始往下找,直到找到相关数据为止,这很低效。相反,如果将经常被查询的列作为行健、行健作为列重新构造一张表,即可实现根据列值快速定位相关数据所在的行,这就是索引。显然索引表仅需要包含一个列,所以索引表的大小和原表比起来要小得多,如图4-14给出了索引表与原表之间的关系。从图可以看出,由于索引表的
1.微博内容的浏览,数据库表设计 2.用户社交体现:关注用户,取关用户 3.拉取关注的人的微博内容
在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法。那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进行对话了。所幸的是,HBase 本身就是用 Java 编写的,天生自带了 Java 原生API。我们可以通过 hbase-client 来实现 HBase 数据库的操作。所以,这次主要介绍该组件的基本用法。
Hbase(五): JavaApi操作Hbase 依赖 <dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>0.98.17-hadoop2</version> </dependency> <dependency> <groupId>org.apache.
操作 HBase 所用的 jar 包,使用 Maven 导入,引入依赖 hbase-it,pom.xml 文件依赖部分如下:
安全组没开放端口是原罪!!!导致好多BUG费时费力。Hbase悄悄咪咪的用了好多端口,比如被我抓到的42239,直接搜索报错药不对症。
我的HBase版本是0.98 首先说明一下,如果用eclipse操作hbase时,如果报Unknown host错误,找不到主机,是因为你没有配IP地址的映射 方法是 找到你的系统盘里面的C:\Windows\System32\drivers\etc下的hosts文件,打开,增加一个映射 加一个映射 192.168.52.140 master 话不多说,直接看代码,注释很详细 import java.io.IOException; import java.util.Arrays; imp
前一篇博客说了一下 HBase 的一些过滤器,今天看看 HBase 的分页过滤器。 在 HBase 中分页过滤是通过 PageFilter 来实现的,在创建这个参数的时候需要设置一个pageSize参数,通过这个参数来控制每页返回的行数,并且在每次查询时需要指定本次查询的起始行。 这里有一点需要注意,HBase中行键的排序是按字典顺序排列的,因此返回的结果也是按此顺序排列。 下面看一下分页过滤的代码片段 Filter filter = new PageFilter(10); Table table = co
package org.ucas.hbase; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang
先计数单词数量存到hdfs文件上,这个是以前的就做过的 package com.my.myhnase.mapreduce; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; i
HBase在大数据生态中的地位举足轻重,它是谷歌bigtable的开源实现,是一种分布式存储的NoSQL数据库,能自动分片和故障转移,与HDFS高度集成,适合海量数据的高效查询。我目前用过的业务场景包括:
对于上次文章预告,这次则以项目实战从后往前进行,先给大家一个直观的应用,从应用中学习,实践中学习。
上一篇博客说了使用 HBase 的客户端 API 来操作操作 HBase 表中记录,今天我们看看怎样通过 API 来批量操作表中的数据。 安装上一篇博客中的方法在 HBase 中如果更新(添加/修改/删除)记录,是按行一条一条更新的,这种方法在处理大量更新操作时,性能比较差,还好在 HBase 中提供了以 Batch 方式来批量更新数据表的方法。下面就看看怎样通过 Table.batch() 方法来批量更新 要使用 Table 的 batch 模式批量更新,我们需要创建一个Put操作的集合,同时提供和一个和
环境配置 Maven添加hbase-client的依赖 <dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.1.2</version> </dependency> </dep
Hbase 安装 这里我使用docker安装,就直接给出命令了 首次启动 输入下列命令 docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase harisekhon/hbase 这里设置的hbase的主机名为myhbase d 后续启动,输
数据集: 链接:https://pan.baidu.com/s/1rnUJn5ld45HpLhzbwYIM1A 提取码:7bsd
数据集: 链接:https://pan.baidu.com/s/1rnUJn5ld45HpLhzbwYIM1A
如果指定了 family或者 qualifier则删除的是部分字段,否则是删除整行
HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv。关于Bulk load大家可以看下我另一篇博文。
问题:Hbase配置正确,但是一旦在HBase Shell中用create语句就出现问题“Master is initializing”
在使用HBase的API查询数据的时候,我们经常需要设置一些过滤条件来查询数据,这个时候我们就需要使用 HBase API 的各种 Filter 来实现这一功能。 在 HBase API 中使用过滤器需要创建一个 Filter 实例,然后使用Scan.setFilter()或者Get.setFilter()来使用 Filter,如下: Table table = connection.getTable(TableName.valueOf(TABLE_NAME)); Scan scan = new Scan(
点击下载 链接:https://pan.baidu.com/s/17r-mfTTYwrgLFh50xDVEvA 提取码:h25r
截至到目前 (2019.04),HBase 有两个主要的版本,分别是 1.x 和 2.x ,两个版本的 Java API 有所不同,1.x 中某些方法在 2.x 中被标识为 @deprecated 过时。所以下面关于 API 的样例,我会分别给出 1.x 和 2.x 两个版本。完整的代码见本仓库:
内存和磁盘同时读取,但是将两个数据进行对比,返回时间戳大的数据,所以说HBase读取比写入要慢得多
Hbase是一个列式数据库,从其本质上来看,可以当做是一个数据源,而Spark本身又可以进行Hbase的连接,访问数据并进行查询。
hadoop 2.7.0 hbase 1.2.1 Thrift 0.9.0
Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等。
利用Python调用HBASE的 需要安装thrift hbase-thrift
其中BusyRegionSplitPolicy是HBase-2.x新增的策略,其他6种在HBase-1.2.x中也可以使用。
以上两个算子分别是基于Hadoop新版API和hadoop旧版API实现的,大部分代码都一样,需要注意的是新版API使用中Job类,旧版API使用JobConf类,另外导包的时候新版的相关jar包在org.apache.hadoop.mapreduce下,而旧版的相关jar包在org.apache.hadoop.mapred下
1.MapReduce从hbase读取数据 //读取hbase表数据 public class HbaseAndMapReduce { public static void main(String[] args) throws Exception { // 测试数据 // testData(); // 完成的作业是: 有共同爱好的人 System.exit(run()); /* * TableMa
Region是表获取和分布的基本元素,由每个列族的一个Store组成。对象层级图如下:
(1) 安装JDK、Hadoop,这里采用的JDK1.8,Hadoop2.7.4,CentOS7.6
1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160427.html原文链接:https://javaforall.cn
HelloWorld.zip 点击(此处)折叠或打开 package elementary; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.Ato
我曾经在Spark大数据开发过程当中,遇到过不少问题,这些问题及解决思路都有记录下来。有道是好记性不如烂笔头,当这些错误和解决思路被记录下来后,下次再遇到时,就能根据以前的坑很快做出回应,当然,若是他人也遇到相应的问题,同样可以提供帮助。
本篇博客小菌为大家带来关于HBase的预分区的内容分享! 在正式开始介绍之前,我们先联系一下之前所学的内容 , 想想原本数据分区(分region)的过程是怎样的? 一个
然而并没有什么乱用,发现一个问题,就是说,在RDD取值与写入HBASE的时候,引入外部变量无法序列化。。。。。。网上很多说法是说extends Serializable ,可是尝试无效。Count()是可以获取到,但是如果我要在configuration中set列,然后进行查询就会报错了。暂时各种办法尝试无果,还在想办法,也不明原因。
前面两篇文章说了怎样使用单个Filter来过滤数据,但是很多情况下我们需要做一下组合过滤,比如有逻辑与和逻辑或的查询,此时我们可以使用FilterList来实现了。 FilterList也是实现了Filter接口,因此我们可以通过多个过滤器组合来实现某些效果。 看下面的例子,我们创建了两个filter,第一个是过滤 username=user_0,第二个是过滤 password=password_0,然后我们将这两个filter组合到一个FilterList对象中,并且制定组合操作符为MUST_PASS_A
注意: HBaseAdmin,HTable,ResultScanner 对象最后都要close()
领取专属 10元无门槛券
手把手带您无忧上云