导航:首页 > 程序命令 > hbase命令建表

hbase命令建表

发布时间:2022-07-17 15:59:05

㈠ hbase命令行方式插入一条数据到某个表中使用什么命令

命令:disable
'tableName'
--disable表。注:修改表结构时,必须要先disable表。
命令:enable
'tableName'
--使表可用
命令:drop
'tableName'
--删除表

㈡ 如何使用java API操作Hbase

一般情况下,我们使用Linux的shell命令,就可以非常轻松的操作Hbase,例如一些建表,建列簇,插值,显示所有表,统计数量等等,但有时为了提高灵活性,我们也需要使用编程语言来操作Hbase,当然Hbase通过Thrift接口提供了对大多数主流编程语言的支持,例如C++,PHP,Python,Ruby等等,那么本篇,散仙给出的例子是基于Java原生的API操作Hbase,相比其他的一些编程语言,使用Java操作Hbase,会更加高效一些,因为Hbase本身就是使用Java语言编写的。转载
下面,散仙给出源码,以供参考:

package com.hbase;

import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
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.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

/**
* @author 三劫散仙
*
* **/
public class Test {

static Configuration conf=null;
static{

conf=HBaseConfiguration.create();//hbase的配置信息
conf.set("hbase.zookeeper.quorum", "10.2.143.5"); //zookeeper的地址

}

public static void main(String[] args)throws Exception {

Test t=new Test();
//t.createTable("temp", new String[]{"name","age"});
//t.insertRow("temp", "2", "age", "myage", "100");
// t.getOneDataByRowKey("temp", "2");
t.showAll("temp");

}

/***
* 创建一张表
* 并指定列簇
* */
public void createTable(String tableName,String cols[])throws Exception{
HBaseAdmin admin=new HBaseAdmin(conf);//客户端管理工具类
if(admin.tableExists(tableName)){
System.out.println("此表已经存在.......");
}else{
HTableDescriptor table=new HTableDescriptor(tableName);
for(String c:cols){
HColumnDescriptor col=new HColumnDescriptor(c);//列簇名
table.addFamily(col);//添加到此表中
}

admin.createTable(table);//创建一个表
admin.close();
System.out.println("创建表成功!");
}
}

/**
* 添加数据,
* 建议使用批量添加
* @param tableName 表名
* @param row 行号
* @param columnFamily 列簇
* @param column 列
* @param value 具体的值
*
* **/
public void insertRow(String tableName, String row,
String columnFamily, String column, String value) throws Exception {
HTable table = new HTable(conf, tableName);
Put put = new Put(Bytes.toBytes(row));
// 参数出分别:列族、列、值
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
Bytes.toBytes(value));

table.put(put);
table.close();//关闭
System.out.println("插入一条数据成功!");
}

/**
* 删除一条数据
* @param tableName 表名
* @param row rowkey
* **/
public void deleteByRow(String tableName,String rowkey)throws Exception{
HTable h=new HTable(conf, tableName);
Delete d=new Delete(Bytes.toBytes(rowkey));
h.delete(d);//删除一条数据
h.close();
}

/**
* 删除多条数据
* @param tableName 表名
* @param row rowkey
* **/
public void deleteByRow(String tableName,String rowkey[])throws Exception{
HTable h=new HTable(conf, tableName);

List<Delete> list=new ArrayList<Delete>();
for(String k:rowkey){
Delete d=new Delete(Bytes.toBytes(k));
list.add(d);
}
h.delete(list);//删除
h.close();//释放资源
}

/**
* 得到一条数据
*
* @param tableName 表名
* @param rowkey 行号
* ***/
public void getOneDataByRowKey(String tableName,String rowkey)throws Exception{
HTable h=new HTable(conf, tableName);

Get g=new Get(Bytes.toBytes(rowkey));
Result r=h.get(g);
for(KeyValue k:r.raw()){

System.out.println("行号: "+Bytes.toStringBinary(k.getRow()));
System.out.println("时间戳: "+k.getTimestamp());
System.out.println("列簇: "+Bytes.toStringBinary(k.getFamily()));
System.out.println("列: "+Bytes.toStringBinary(k.getQualifier()));
//if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
// System.out.println("值: "+Bytes.toInt(k.getValue()));
//}else{
String ss= Bytes.toString(k.getValue());
System.out.println("值: "+ss);
//}

}
h.close();

}

/**
* 扫描所有数据或特定数据
* @param tableName
* **/
public void showAll(String tableName)throws Exception{

HTable h=new HTable(conf, tableName);

Scan scan=new Scan();
//扫描特定区间
//Scan scan=new Scan(Bytes.toBytes("开始行号"),Bytes.toBytes("结束行号"));
ResultScanner scanner=h.getScanner(scan);
for(Result r:scanner){
System.out.println("==================================");
for(KeyValue k:r.raw()){

System.out.println("行号: "+Bytes.toStringBinary(k.getRow()));
System.out.println("时间戳: "+k.getTimestamp());
System.out.println("列簇: "+Bytes.toStringBinary(k.getFamily()));
System.out.println("列: "+Bytes.toStringBinary(k.getQualifier()));
//if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
// System.out.println("值: "+Bytes.toInt(k.getValue()));
//}else{
String ss= Bytes.toString(k.getValue());
System.out.println("值: "+ss);
//}

}
}
h.close();

}

}

显示所有数据的打印输出如下:

==================================
行号: 1
时间戳: 1385597699287
列簇: name
列: myname
值: 秦东亮
==================================
行号: 2
时间戳: 1385598393306
列簇: age
列: myage
值: 100
行号: 2
时间戳: 1385597723900
列簇: name
列: myname
值: 三劫散仙

由此,可以看出Hbase的对外的API提供接口,是非常简单易用的。

㈢ hbase-GUI使用方法

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建大规模结构化的存储集群。HBase的目标是存储并处理大型数据,具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。与MapRece的离线批处理计算框架不同,HBase是一个可以随机访问的存储和检索数据平台,弥补了HDFS不能随机访问数据的缺陷,适合实时性要求不是非常高的业务场景。HBase存储的都是Byte数组,它不介意数据类型,允许动态、灵活的数据模型。
看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下:名称命令表达式 创建表create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录get '表名称', '行名称' 查看表中的记录总数count '表名称' 删除记录delete '表名' ,'行名称' , '列名称'。

㈣ Windows7下单机安装hbase之后创建表和列簇 报错

hbase
shell不能创建表的原因分析。
一.现象:
前一段时间
安装了Hbase
hbase
shell
进去之后
list
status
命令都能够正常运行。
但是执行建表语句

create
'aaa','bbb'
的时候
他就一直卡在那不动,也不报任何错误,
日志里面一直在刷如下的
debug日志:

㈤ hbase怎么用

HBase安装及简单使用

通过之前的hadoop0.20.2的安装并调试成功,接下来我们继续安装hbase0.90.5。在安装hbase0.90.5之前,因为hbase0.90.5只支持jdk1.6,所以,我把之前的jdk1.8卸载,重新安装了jdk1.6。

第一步:

首先需要下载hbase0.90.5.tar.gz,并解压到/home/hadoop/的目录下,同时将目录修改为hbase0.90.5

第二步:

替换hadoop核心jar包,主要母的是防止hbase和hadoop版本不同出现兼容问题,造成hmaster启动异常

将hbase0.90.5/lib目录中的hadoop-core-0.20-append-r1056497.jar包进行备份后删除,再将/home/hadoop/hadoop下面的hadoop-0.20.2-core.jar赋值到/home/hadoop/hbase0.90.5目录下即可

第三步:

编辑配置文件

①/home/hadoop/hbase0.90.5/conf/hbase-env.sh

我们对行键'1001'中列族info的列名age赋值24(1001:info:age=>24),插入两次,会将最后一次的值进行合并,其中,用时间戳来区分。从图片中的时间戳不同可以看出保存的是最后一次put的内容。

㈥ Hbase0.9装到Linux7.6不建表

Hbase0.9装到Linux7.6不建表处理。
启动HBase没有问题,但是使用bin,hbaseshell命令转换到shell下时,使用比如命令,list,create,table,col等等都会出错,虽然看到了log文档里面的提示,但是由于是刚开始接触HBase,所以还是不知道如何下手。
还是上网找各种资源,最后看到官方文档上面说,如果系统是Ubuntu的话,要注意/etc/hosts里面的127.0.0.1是否是127.0.1.1,如果是的话,把他改过来就可以了,虽然网上大家的版本各种各样,但是如果真的要学的话,还是官网上面的资料齐全点。

㈦ hive关联hbase建一张外部表,报如下错,求大神指教

两种方式:一,建立一个hive和hbase公用的表,这样可以使用hive操作hbase的表,但是插入数据较慢,不建议这样做。 二,手写maprece,把hive里面的数据转换为hfile,然后倒入。hbase的maprece接口里面好像也有对应的api可以直接导入的。

㈧ hbase创建表时出现connection closed错误

解决方法如下:
先关闭hbase和hadoop进程
查看hdfs-site.xml
把这两个文件夹中的文件全部删除(name文件夹同理)
重新执行hadoop格式化
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

㈨ 求助,HBASE不能创建表

hbase shell不能创建表的原因分析。

一.现象:

前一段时间 安装了Hbase

hbase shell

进去之后 list status 命令都能够正常运行。
但是执行建表语句 :
create 'aaa','bbb'

的时候 他就一直卡在那不动,也不报任何错误, 日志里面一直在刷如下的 debug日志:

DEBUG org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation: Lookep root region location, connection=org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@23faa614; serverName=
INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to checkin

然后我进到 hive里面 也是可以执行查看语句 但是不能创建表。
状态就是 只能读不能写。

二.解决办法:

namenode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例,则系统会一直处于安全模式状态即只读状态。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。

有两个方法离开这种安全模式
(1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。
(2)hadoop dfsadmin -safemode leave命令强制离开
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
1. enter - 进入安全模式
2. leave - 强制NameNode离开安全模式
3. get - 返回安全模式是否开启的信息
4. wait - 等待,一直到安全模式结束。

我采取的办法是 强制离开安全模式。
进入hadoop 的bin目录,

执行:

hadoop dfsadmin -safemode leave

然后我分别进入 hive 和 hbase

create 就可以 顺利的执行了。

㈩ Hive中创建Hbase内部表,往hbase里插数据,hive能查到数据但是不能count条数。

两种方式:一,建立一个hive和hbase公用的表,这样可以使用hive操作hbase的表,但是插入数据较慢,不建议这样做。
二,手写maprece,把hive里面的数据转换为hfile,然后倒入。hbase的maprece接口里面好像也有对应的api可以直接导入的。

阅读全文

与hbase命令建表相关的资料

热点内容
个人所得税java 浏览:752
多余的服务器滑道还有什么用 浏览:180
pdf劈开合并 浏览:17
不能修改的pdf 浏览:742
同城公众源码 浏览:478
一个服务器2个端口怎么映射 浏览:283
java字符串ascii码 浏览:67
台湾云服务器怎么租服务器 浏览:466
旅游手机网站源码 浏览:321
android关联表 浏览:934
安卓导航无声音怎么维修 浏览:324
app怎么装视频 浏览:426
安卓系统下的软件怎么移到桌面 浏览:85
windows拷贝到linux 浏览:762
mdr软件解压和别人不一样 浏览:895
单片机串行通信有什么好处 浏览:331
游戏开发程序员书籍 浏览:851
pdf中图片修改 浏览:279
汇编编译后 浏览:482
php和java整合 浏览:840