導航:首頁 > 程序命令 > 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命令建表相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:751
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491