日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

HBase总结(十二)Java API 与HBase交互实例

發布時間:2025/6/15 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase总结(十二)Java API 与HBase交互实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HBase提供了Java Api的訪問接口,掌握這個就跟Java應用使用RDBMS時需要JDBC一樣重要


[html]?view plaincopy
  • import?java.io.IOException;??
  • ??
  • 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.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;??
  • import?org.apache.hadoop.hbase.util.Bytes;??
  • ??
  • public?class?Hbase?{??
  • ????//?聲明靜態配置??
  • ????static?Configuration?conf?=?null;??
  • ????static?{??
  • ????????conf?=?HBaseConfiguration.create();??
  • ????????conf.set("hbase.zookeeper.quorum",?"localhost");??
  • ????}??
  • ??
  • ????/*??
  • ?????*?創建表??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@family?列族列表??
  • ?????*/??
  • ????public?static?void?creatTable(String?tableName,?String[]?family)??
  • ????????????throws?Exception?{??
  • ????????HBaseAdmin?admin?=?new?HBaseAdmin(conf);??
  • ????????HTableDescriptor?desc?=?new?HTableDescriptor(tableName);??
  • ????????for?(int?i?=?0;?i?<?family.length;?i++)?{??
  • ????????????desc.addFamily(new?HColumnDescriptor(family[i]));??
  • ????????}??
  • ????????if?(admin.tableExists(tableName))?{??
  • ????????????System.out.println("table?Exists!");??
  • ????????????System.exit(0);??
  • ????????}?else?{??
  • ????????????admin.createTable(desc);??
  • ????????????System.out.println("create?table?Success!");??
  • ????????}??
  • ????}??
  • ??
  • ????/*??
  • ?????*?為表添加數據(適合知道有多少列族的固定表)??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@column1?第一個列族列表??
  • ?????*???
  • ?????*?@value1?第一個列的值的列表??
  • ?????*???
  • ?????*?@column2?第二個列族列表??
  • ?????*???
  • ?????*?@value2?第二個列的值的列表??
  • ?????*/??
  • ????public?static?void?addData(String?rowKey,?String?tableName,??
  • ????????????String[]?column1,?String[]?value1,?String[]?column2,?String[]?value2)??
  • ????????????throws?IOException?{??
  • ????????Put?put?=?new?Put(Bytes.toBytes(rowKey));//?設置rowkey??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));//?HTabel負責跟記錄相關的操作如增刪改查等//??
  • ????????????????????????????????????????????????????????????????????//?獲取表??
  • ????????HColumnDescriptor[]?columnFamilies?=?table.getTableDescriptor()?//?獲取所有的列族??
  • ????????????????.getColumnFamilies();??
  • ??
  • ????????for?(int?i?=?0;?i?<?columnFamilies.length;?i++)?{??
  • ????????????String?familyName?=?columnFamilies[i].getNameAsString();?//?獲取列族名??
  • ????????????if?(familyName.equals("article"))?{?//?article列族put數據??
  • ????????????????for?(int?j?=?0;?j?<?column1.length;?j++)?{??
  • ????????????????????put.add(Bytes.toBytes(familyName),??
  • ????????????????????????????Bytes.toBytes(column1[j]),?Bytes.toBytes(value1[j]));??
  • ????????????????}??
  • ????????????}??
  • ????????????if?(familyName.equals("author"))?{?//?author列族put數據??
  • ????????????????for?(int?j?=?0;?j?<?column2.length;?j++)?{??
  • ????????????????????put.add(Bytes.toBytes(familyName),??
  • ????????????????????????????Bytes.toBytes(column2[j]),?Bytes.toBytes(value2[j]));??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????????table.put(put);??
  • ????????System.out.println("add?data?Success!");??
  • ????}??
  • ??
  • ????/*??
  • ?????*?根據rwokey查詢??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*/??
  • ????public?static?Result?getResult(String?tableName,?String?rowKey)??
  • ????????????throws?IOException?{??
  • ????????Get?get?=?new?Get(Bytes.toBytes(rowKey));??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));//?獲取表??
  • ????????Result?result?=?table.get(get);??
  • ????????for?(KeyValue?kv?:?result.list())?{??
  • ????????????System.out.println("family:"?+?Bytes.toString(kv.getFamily()));??
  • ????????????System.out??
  • ????????????????????.println("qualifier:"?+?Bytes.toString(kv.getQualifier()));??
  • ????????????System.out.println("value:"?+?Bytes.toString(kv.getValue()));??
  • ????????????System.out.println("Timestamp:"?+?kv.getTimestamp());??
  • ????????????System.out.println("-------------------------------------------");??
  • ????????}??
  • ????????return?result;??
  • ????}??
  • ??
  • ????/*??
  • ?????*?遍歷查詢hbase表??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*/??
  • ????public?static?void?getResultScann(String?tableName)?throws?IOException?{??
  • ????????Scan?scan?=?new?Scan();??
  • ????????ResultScanner?rs?=?null;??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????try?{??
  • ????????????rs?=?table.getScanner(scan);??
  • ????????????for?(Result?r?:?rs)?{??
  • ????????????????for?(KeyValue?kv?:?r.list())?{??
  • ????????????????????System.out.println("row:"?+?Bytes.toString(kv.getRow()));??
  • ????????????????????System.out.println("family:"??
  • ????????????????????????????+?Bytes.toString(kv.getFamily()));??
  • ????????????????????System.out.println("qualifier:"??
  • ????????????????????????????+?Bytes.toString(kv.getQualifier()));??
  • ????????????????????System.out??
  • ????????????????????????????.println("value:"?+?Bytes.toString(kv.getValue()));??
  • ????????????????????System.out.println("timestamp:"?+?kv.getTimestamp());??
  • ????????????????????System.out??
  • ????????????????????????????.println("-------------------------------------------");??
  • ????????????????}??
  • ????????????}??
  • ????????}?finally?{??
  • ????????????rs.close();??
  • ????????}??
  • ????}??
  • ??
  • ????/*??
  • ?????*?遍歷查詢hbase表??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*/??
  • ????public?static?void?getResultScann(String?tableName,?String?start_rowkey,??
  • ????????????String?stop_rowkey)?throws?IOException?{??
  • ????????Scan?scan?=?new?Scan();??
  • ????????scan.setStartRow(Bytes.toBytes(start_rowkey));??
  • ????????scan.setStopRow(Bytes.toBytes(stop_rowkey));??
  • ????????ResultScanner?rs?=?null;??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????try?{??
  • ????????????rs?=?table.getScanner(scan);??
  • ????????????for?(Result?r?:?rs)?{??
  • ????????????????for?(KeyValue?kv?:?r.list())?{??
  • ????????????????????System.out.println("row:"?+?Bytes.toString(kv.getRow()));??
  • ????????????????????System.out.println("family:"??
  • ????????????????????????????+?Bytes.toString(kv.getFamily()));??
  • ????????????????????System.out.println("qualifier:"??
  • ????????????????????????????+?Bytes.toString(kv.getQualifier()));??
  • ????????????????????System.out??
  • ????????????????????????????.println("value:"?+?Bytes.toString(kv.getValue()));??
  • ????????????????????System.out.println("timestamp:"?+?kv.getTimestamp());??
  • ????????????????????System.out??
  • ????????????????????????????.println("-------------------------------------------");??
  • ????????????????}??
  • ????????????}??
  • ????????}?finally?{??
  • ????????????rs.close();??
  • ????????}??
  • ????}??
  • ??
  • ????/*??
  • ?????*?查詢表中的某一列??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*/??
  • ????public?static?void?getResultByColumn(String?tableName,?String?rowKey,??
  • ????????????String?familyName,?String?columnName)?throws?IOException?{??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????Get?get?=?new?Get(Bytes.toBytes(rowKey));??
  • ????????get.addColumn(Bytes.toBytes(familyName),?Bytes.toBytes(columnName));?//?獲取指定列族和列修飾符對應的列??
  • ????????Result?result?=?table.get(get);??
  • ????????for?(KeyValue?kv?:?result.list())?{??
  • ????????????System.out.println("family:"?+?Bytes.toString(kv.getFamily()));??
  • ????????????System.out??
  • ????????????????????.println("qualifier:"?+?Bytes.toString(kv.getQualifier()));??
  • ????????????System.out.println("value:"?+?Bytes.toString(kv.getValue()));??
  • ????????????System.out.println("Timestamp:"?+?kv.getTimestamp());??
  • ????????????System.out.println("-------------------------------------------");??
  • ????????}??
  • ????}??
  • ??
  • ????/*??
  • ?????*?更新表中的某一列??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*???
  • ?????*?@familyName?列族名??
  • ?????*???
  • ?????*?@columnName?列名??
  • ?????*???
  • ?????*?@value?更新后的值??
  • ?????*/??
  • ????public?static?void?updateTable(String?tableName,?String?rowKey,??
  • ????????????String?familyName,?String?columnName,?String?value)??
  • ????????????throws?IOException?{??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????Put?put?=?new?Put(Bytes.toBytes(rowKey));??
  • ????????put.add(Bytes.toBytes(familyName),?Bytes.toBytes(columnName),??
  • ????????????????Bytes.toBytes(value));??
  • ????????table.put(put);??
  • ????????System.out.println("update?table?Success!");??
  • ????}??
  • ??
  • ????/*??
  • ?????*?查詢某列數據的多個版本??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*???
  • ?????*?@familyName?列族名??
  • ?????*???
  • ?????*?@columnName?列名??
  • ?????*/??
  • ????public?static?void?getResultByVersion(String?tableName,?String?rowKey,??
  • ????????????String?familyName,?String?columnName)?throws?IOException?{??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????Get?get?=?new?Get(Bytes.toBytes(rowKey));??
  • ????????get.addColumn(Bytes.toBytes(familyName),?Bytes.toBytes(columnName));??
  • ????????get.setMaxVersions(5);??
  • ????????Result?result?=?table.get(get);??
  • ????????for?(KeyValue?kv?:?result.list())?{??
  • ????????????System.out.println("family:"?+?Bytes.toString(kv.getFamily()));??
  • ????????????System.out??
  • ????????????????????.println("qualifier:"?+?Bytes.toString(kv.getQualifier()));??
  • ????????????System.out.println("value:"?+?Bytes.toString(kv.getValue()));??
  • ????????????System.out.println("Timestamp:"?+?kv.getTimestamp());??
  • ????????????System.out.println("-------------------------------------------");??
  • ????????}??
  • ????????/*??
  • ?????????*?List<?>?results?=?table.get(get).list();?Iterator<?>?it?=??
  • ?????????*?results.iterator();?while?(it.hasNext())?{??
  • ?????????*?System.out.println(it.next().toString());?}??
  • ?????????*/??
  • ????}??
  • ??
  • ????/*??
  • ?????*?刪除指定的列??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*???
  • ?????*?@familyName?列族名??
  • ?????*???
  • ?????*?@columnName?列名??
  • ?????*/??
  • ????public?static?void?deleteColumn(String?tableName,?String?rowKey,??
  • ????????????String?falilyName,?String?columnName)?throws?IOException?{??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????Delete?deleteColumn?=?new?Delete(Bytes.toBytes(rowKey));??
  • ????????deleteColumn.deleteColumns(Bytes.toBytes(falilyName),??
  • ????????????????Bytes.toBytes(columnName));??
  • ????????table.delete(deleteColumn);??
  • ????????System.out.println(falilyName?+?":"?+?columnName?+?"is?deleted!");??
  • ????}??
  • ??
  • ????/*??
  • ?????*?刪除指定的列??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*???
  • ?????*?@rowKey?rowKey??
  • ?????*/??
  • ????public?static?void?deleteAllColumn(String?tableName,?String?rowKey)??
  • ????????????throws?IOException?{??
  • ????????HTable?table?=?new?HTable(conf,?Bytes.toBytes(tableName));??
  • ????????Delete?deleteAll?=?new?Delete(Bytes.toBytes(rowKey));??
  • ????????table.delete(deleteAll);??
  • ????????System.out.println("all?columns?are?deleted!");??
  • ????}??
  • ??
  • ????/*??
  • ?????*?刪除表??
  • ?????*???
  • ?????*?@tableName?表名??
  • ?????*/??
  • ????public?static?void?deleteTable(String?tableName)?throws?IOException?{??
  • ????????HBaseAdmin?admin?=?new?HBaseAdmin(conf);??
  • ????????admin.disableTable(tableName);??
  • ????????admin.deleteTable(tableName);??
  • ????????System.out.println(tableName?+?"is?deleted!");??
  • ????}??
  • ??
  • ????public?static?void?main(String[]?args)?throws?Exception?{??
  • ??
  • ????????//?創建表??
  • ????????String?tableName?=?"blog2";??
  • ????????String[]?family?=?{?"article",?"author"?};??
  • ????????//?creatTable(tableName,?family);??
  • ??
  • ????????//?為表添加數據??
  • ??
  • ????????String[]?column1?=?{?"title",?"content",?"tag"?};??
  • ????????String[]?value1?=?{??
  • ????????????????"Head?First?HBase",??
  • ????????????????"HBase?is?the?Hadoop?database.?Use?it?when?you?need?random,?realtime?read/write?access?to?your?Big?Data.",??
  • ????????????????"Hadoop,HBase,NoSQL"?};??
  • ????????String[]?column2?=?{?"name",?"nickname"?};??
  • ????????String[]?value2?=?{?"nicholas",?"lee"?};??
  • ????????addData("rowkey1",?"blog2",?column1,?value1,?column2,?value2);??
  • ????????addData("rowkey2",?"blog2",?column1,?value1,?column2,?value2);??
  • ????????addData("rowkey3",?"blog2",?column1,?value1,?column2,?value2);??
  • ??
  • ????????//?遍歷查詢??
  • ????????getResultScann("blog2",?"rowkey4",?"rowkey5");??
  • ????????//?根據row?key范圍遍歷查詢??
  • ????????getResultScann("blog2",?"rowkey4",?"rowkey5");??
  • ??
  • ????????//?查詢??
  • ????????getResult("blog2",?"rowkey1");??
  • ??
  • ????????//?查詢某一列的值??
  • ????????getResultByColumn("blog2",?"rowkey1",?"author",?"name");??
  • ??
  • ????????//?更新列??
  • ????????updateTable("blog2",?"rowkey1",?"author",?"name",?"bin");??
  • ??
  • ????????//?查詢某一列的值??
  • ????????getResultByColumn("blog2",?"rowkey1",?"author",?"name");??
  • ??
  • ????????//?查詢某列的多版本??
  • ????????getResultByVersion("blog2",?"rowkey1",?"author",?"name");??
  • ??
  • ????????//?刪除一列??
  • ????????deleteColumn("blog2",?"rowkey1",?"author",?"nickname");??
  • ??
  • ????????//?刪除所有列??
  • ????????deleteAllColumn("blog2",?"rowkey1");??
  • ??
  • ????????//?刪除表??
  • ????????deleteTable("blog2");??
  • ??
  • ????}??
  • }??
  • 總結

    以上是生活随笔為你收集整理的HBase总结(十二)Java API 与HBase交互实例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。