在Eclipse中執行JAVA程式碼遠端操作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】將Eclipse中的java專案轉移到Linux下執行
在閱讀的過程中有任何問題,歡迎一起交流 QQ:1494713801 有些java專案考慮到效能的需求或者需要呼叫shell指令碼等,需要在Linux系統下執行。完成Eclipse中的java專案到Linux系統下遷移需要一些操作: 1、將Ecli
Eclipse中的java、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
科普 eclipse中的Java 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