1. 程式人生 > >在Eclipse中執行JAVA程式碼遠端操作HBase的示例

在Eclipse中執行JAVA程式碼遠端操作HBase的示例

下面是一個在Windows的Eclipse中通過JAVA操作一個Linux上執行的hbase的示例。
Hbase的配置需要注意下面一些要點:
1,伺服器端用主機名配置hadoop和hbase,不要用IP
比如如下:
<property>  
 <name>hbase.zookeeper.quorum</name>  
 <value>hadoopsrv</value>  
</property>
2,hbase執行的機器上的機器名不能叫localhost
改/etc/sysconfig/network中的HOSTNAME
比如:
HOSTNAME=hadoopsrv
3,修改eclipse執行的windows客戶端的C:\Windows\System32\drivers\etc\hosts檔案.
對應到hbase執行伺服器的ip,比如:
192.168.2.6 hadoopsrv
JAVA程式碼如下

package org.apache.hadoop.hbase;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
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.HTablePool;
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;

public class HbaseTest {
	private HBaseAdmin admin = null;
	// 定義配置物件HBaseConfiguration
	private HBaseConfiguration cfg = null;

	public HbaseTest() throws Exception {
		Configuration HBASE_CONFIG = new Configuration();

		HBASE_CONFIG.set("hbase.zookeeper.quorum", "192.168.2.6");

		HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181");

		cfg = new HBaseConfiguration(HBASE_CONFIG);

		admin = new HBaseAdmin(cfg);
	}

	// 建立一張表,指定表名,列族
	public void createTable(String tableName, String columnFarily)
			throws Exception {

		if (admin.tableExists(tableName)) {
			System.out.println(tableName + "存在!");
			System.exit(0);
		} else {
			HTableDescriptor tableDesc = new HTableDescriptor(tableName);
			tableDesc.addFamily(new HColumnDescriptor(columnFarily));
			admin.createTable(tableDesc);
			System.out.println("建立表成功!");
		}
	}

	// Hbase獲取所有的表資訊
	public List getAllTables() {
		List<String> tables = null;
		if (admin != null) {
			try {
				HTableDescriptor[] allTable = admin.listTables();
				if (allTable.length > 0)
					tables = new ArrayList<String>();
				for (HTableDescriptor hTableDescriptor : allTable) {
					tables.add(hTableDescriptor.getNameAsString());
					System.out.println(hTableDescriptor.getNameAsString());
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return tables;
	}

	// Hbase中往某個表中新增一條記錄
	public boolean addOneRecord(String table, String key, String family,
			String col, byte[] dataIn) {
		HTablePool tp = new HTablePool(cfg, 1000);
		HTable tb = (HTable) tp.getTable(table);
		Put put = new Put(key.getBytes());
		put.add(family.getBytes(), col.getBytes(), dataIn);
		try {
			tb.put(put);
			System.out.println("插入資料條" + key + "成功!!!");
			return true;
		} catch (IOException e) {
			System.out.println("插入資料條" + key + "失敗!!!");
			return false;
		}
	}

	// Hbase表中記錄資訊的查詢
	public void getValueFromKey(String table, String key) {
		HTablePool tp = new HTablePool(cfg, 1000);
		HTable tb = (HTable) tp.getTable(table);
		Get get = new Get(key.getBytes());
		try {
			Result rs = tb.get(get);
			if (rs.raw().length == 0) {
				System.out.println("不存在關鍵字為" + key + "的行!!");

			} else {
				for (KeyValue kv : rs.raw()) {
					System.out.println(new String(kv.getKey()) + " "
							+ new String(kv.getValue()));
				}

			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 顯示所有資料,通過HTable Scan類獲取已有表的資訊
	public void getAllData(String tableName) throws Exception {
		HTable table = new HTable(cfg, tableName);
		Scan scan = new Scan();
		ResultScanner rs = table.getScanner(scan);
		for (Result r : rs) {
			for (KeyValue kv : r.raw()) {
				System.out.println(new String(kv.getKey())
						+ new String(kv.getValue()));
			}
		}
	}

	// Hbase表中記錄資訊的刪除
	public boolean deleteRecord(String table, String key) {
		HTablePool tp = new HTablePool(cfg, 1000);
		HTable tb = (HTable) tp.getTable(table);
		Delete de = new Delete(key.getBytes());
		try {
			tb.delete(de);
			return true;
		} catch (IOException e) {
			System.out.println("刪除記錄" + key + "異常!!!");
			return false;
		}
	}

	// Hbase中表的刪除
	public boolean deleteTable(String table) {
		try {
			if (admin.tableExists(table)) {
				admin.disableTable(table);
				admin.deleteTable(table);
				System.out.println("刪除表" + table + "!!!");
			}
			return true;
		} catch (IOException e) {
			System.out.println("刪除表" + table + "異常!!!");
			return false;
		}
	}

	// 測試函式
	public static void main(String[] args) {
		try {
			HbaseTest hbase = new HbaseTest();
			// hbase.createTable("student", "fam1");
			// hbase.getAllTables();

			// hbase.addOneRecord("student","id1","fam1","name","Jack".getBytes());
			// hbase.addOneRecord("student","id1","fam1","address","HZ".getBytes());
			// hbase.getValueFromKey("student","id1");
			// hbase.getAllData("student");

			//hbase.deleteRecord("student", "id1");
			
			hbase.deleteTable("student");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

相關推薦

Eclipse執行JAVA程式碼遠端操作HBase示例

下面是一個在Windows的Eclipse中通過JAVA操作一個Linux上執行的hbase的示例。 Hbase的配置需要注意下面一些要點: 1,伺服器端用主機名配置hadoop和hbase,不要用IP 比如如下: <property>    <name&

如何在eclipse執行java檔案

很多像我這樣的小白在學習中總會遇到各種問題。 連入門都得靠摸索。 方法一: (1):新建一個專案 可以是java project也可以就用project (2):有了工程後,在src檔案下有兩種操作方式。 1:直接在預設包下執行java檔案 a:複製java檔

eclipse執行Maven強制更新操作

如何用Maven來新增jar包:舉個例子,新增fastjson的jar包 1:首先需要在eclipse中安裝Maven外掛; 2:在pom.xml檔案中,新增: <!-- fastjson --> <dependency

沉澱再出發:如何在eclipse檢視java的核心程式碼

沉澱再出發:如何在eclipse中檢視java的核心程式碼 一、前言   很多時候我們在eclipse中按F3鍵打算檢視某一個系統類的定義的時候,總是彈出找不到類這樣的介面,這裡我們把核心對應的程式碼加進去就可以了。 二、解決辦法  2.1、開啟配置    首

實現在Java執行python程式碼或py指令碼(可傳引數)

最近用Java寫服務端程式時,遇到這樣一個需求:需要把用python寫的機器學習演算法部署到伺服器上,然後Java執行py指令碼,並且取得演算法執行的結果。在網上找了很久,有些跑不通,有些是基於windows的,我的伺服器是linux的,遇到了不少坑= =好不容易解決了,記錄

Java程式碼實現對HBase的基本操作

概覽 1.匯入jar包 2.測試 3.異常處理 首先將HBase搭建完成,然後啟動Zookeeper,Hadoop,HBase叢集 1.匯入jar包 準備: 1.CentOS7 2.Zookeeper叢集 3.Hadoop2.7.3叢集 4.hbase2.0.0

eclipse如何把java程式碼,打包成jar檔案以及轉換為exe可執行檔案

1、背景:     學習java時,教材中關於如題問題,只有一小節說明,而且要自己寫麻煩的配置檔案,最終結果卻只能轉換為jar檔案。實在是心有不爽。此篇部落格教你如何方便快捷地把java程式碼,打包成jar檔案以及轉換為exe可執行檔案 2、前言:     我們都知道

android kotlin與Java操作(一)在 Kotlin 呼叫 Java 程式碼

已對映型別 Kotlin 特殊處理一部分 Java 型別。這樣的型別不是“按原樣”從 Java 載入,而是 對映 到相應的 Kotlin 型別。 對映只發生在編譯期間,執行時表示保持不變 Java 型別 Kotlin 型別 byte

Eclipse 連線 SQL Server 2008資料庫,執行JAVA程式碼時出現:‘sa’使用者登入失敗

前幾天用Eclipse 連線 SQL Server 2008資料庫,執行JAVA程式碼時總是出現:‘sa’使用者登入失敗。 我的連線方法都是按照網上找的,一直在尋找錯誤的原因,網上說(1)sql server的密碼是否正確;(2).sql server是否設定的是混合登入;

【Linux】將Eclipsejava專案轉移到Linux下執行

在閱讀的過程中有任何問題,歡迎一起交流 QQ:1494713801      有些java專案考慮到效能的需求或者需要呼叫shell指令碼等,需要在Linux系統下執行。完成Eclipse中的java專案到Linux系統下遷移需要一些操作:      1、將Ecli

Eclipsejava、xml程式碼提示功能設定

怎麼設定使Eclipse的程式碼提示功能一樣能像Microsoft Visual Studio的程式碼提示功能,般預設情況下,Eclipse ,Eclipse 的程式碼提示功能是比Microsoft Visual Studio的差很多的 ,主要是Eclipse ,MyEclipse本身有很多選項是預設關閉

Eclipse執行遠端debug

遠端debug,即debug遠端機器上的Java程式,前提是本地需要有同步的程式碼。遠端debug的步驟如下: 1.遠端機器上啟動java程序的時候,需加入debug引數 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:tr

如何在Eclipse設定Java、JavaScript、HTML智慧程式碼提示

Eclipse是Java開發者們最熱門的整合開發工具之一,除了強大的基礎功能之外,還有就是程式碼提示功能。現在給大家演示怎麼設定程式碼提示吧!首先開啟Eclipse選單欄中設定選單:Window→Pre

Eclipse做SVN程式碼回退操作

在實踐中,常見的操作如下3種,其中前兩種在eclipse中都可以很容易做到,而第3種我還沒發現eclipse可以做到(儘管看了很多別人的文章,但從未親測成功過),這裡自己用了一個比較笨拙的方式實現了。以下分別進行介紹: 1、取消本地的全部修改,回退到最近一次更新後狀態

樹莓派java程式碼遠端部署執行【4】------idea開發spring boot開發並上傳

首先去現在idea 其實普通的java web 專案就可以實現,但是本著使用最新技術的,還是用spring boot 進行測試,而且使用spring boot可以大大的提高開發效率,誰用誰知道。 這裡給spring boot打一波廣告,強烈給大家推薦spri

科普 eclipseJava build

ria lib extern lips add 科普 rop 極客 添加 在剛學eclipse的時候,build path是經常會用到的,但經常就是跟著教程走,額就不太懂這是幹嘛的,然後今天看見極客視頻裏有相關的講解,來記錄一下。 Build Path 是指定Java工程所

eclipse新建java類自動生成說明文檔與註釋

技術 說明文檔 http image clip 效果 ips 自動 新建 直接上圖解步驟 保存後新建java類的效果 完結~ 撒花~~~ eclipse中新建java類自動生成說明文檔與註釋

Eclipse執行maven命令(轉載)

pom 下載 http ssp pom.xml文件 soft 讓我 generate fill 轉載自:http://blog.csdn.net/u011939453/article/details/43017865 1、如下圖,右擊需要執行maven命令的工程,選擇

記一次解決cmd執行java提示"找不到或無法加載主類"的問題

提示 .com nbsp 大小寫 環境變量 spa 文件中 .exe 輸入 今天遇到一個問題:在cmd命令行中,用javac編譯java文件可以成功,但是用java執行卻提示“找不到或無法加載主類”。現將該問題的原因以及解決辦法記錄一下。 先理解一下系統變量path和cla

eclipse執行tomcat出現錯誤:-Djava.endorsed.dirs=/users/huchao/library/tomcat-9/endorsed is not supported

-Djava.endorsed.dirs=/users/huchao/library/tomcat-9/endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported vi