java 2015001_hbase的Java操作
1、创建表
private static Connection connection;
private static Admin admin;
public static void createTable(String tableName, String[] fields) throws IOException {
if(admin.tableExists(TableName.valueOf(tableName)))
{
deleteTable(tableName);
}
//2.TableDescriptorBuilder.newBuilder构建表描述构建器
TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
for (int i=0;i
{
//3.创建列簇构造描述器
ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(fields[i]));
//4.构建列簇描述
ColumnFamilyDescriptor cfDes = columnFamilyDescriptorBuilder.build();
//建立表与列簇的关联关系
tableDescriptorBuilder.setColumnFamily(cfDes);
}
TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
admin.createTable(tableDescriptor);
}
public static void main(String[] args) throws IOException {
//用HBaseConfiguration.create();创建HBase的配置
Configuration configuration = HBaseConfiguration.create();
//用ConnectionFactory.createConnection创建HBase()连接
connection = ConnectionFactory.createConnection(configuration);
// 创建表,要给予HBase获取Admin对象
admin = connection.getAdmin();
String tablename = "WATER_BILL";
//1.创建表和列
String[] filed = {"H1", "H2", "H3"};
createTable(tablename, filed);
}
2、添加数据
public static void addRecord(String tableName, String row, String[] fields, String[] values) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
String []column=new String[110];
String columnFamily="";
for(int i=0;i
{
String []split=fields[i].split(":");
column[i]=split[1];
columnFamily=split[0];
}
Put put = new Put(Bytes.toBytes(row));
for(int i=0;i
{
put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(column[i]),Bytes.toBytes(values[i]));
}
//5.使用htable表执行put操作
table.put(put);
//关闭htable表对象
table.close();
}
public static void main(String[] args) throws IOException {
//用HBaseConfiguration.create();创建HBase的配置
Configuration configuration = HBaseConfiguration.create();
//用ConnectionFactory.createConnection创建HBase()连接
connection = ConnectionFactory.createConnection(configuration);
// 创建表,要给予HBase获取Admin对象
admin = connection.getAdmin();
String tablename = "WATER_BILL";
//1.创建表和列
// String[] filed = {"H1", "H2", "H3"};
// createTable(tablename, filed);
//2.向表tableName、行row(用S_Name表示)和字符串数组fields指定的单元格中添加对应的数据values。
// 其中,fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。
// 例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,
// 字符串数组fields为{“Score:Math”, ”Score:Computer Science”, ”Score:English”},数组values存储这三门课的成绩。
String[] fields = {"H1:S_NO", "H1:S_Name", "H1:S_Sex", "H1:S_Age"};
String[] values = {"2015001", "Zhangsan", "male", "23"};
String row = "Zhangsan";
addRecord(tablename, row, fields, values);
}
1|3查看表中某rowkey的列簇下的所有值,或者单个列簇:列名的值
3、查看表中的值
public static void scanColumn(String tableName,String rowKey, String column) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(rowKey.getBytes());
if(column.contains(":"))
{
//查询指定rowkey和列簇下的指定列名
String[] split = column.split(":");
get.addColumn(Bytes.toBytes(split[0]),Bytes.toBytes(split[1]));
Result result = table.get(get);
byte[] value = result.getValue(Bytes.toBytes(split[0]), Bytes.toBytes(split[1]));
if(Bytes.toString(value)!=null)
System.out.println(Bytes.toString(value));
else
System.out.println("null");
}
else
{
//查询指定rowkey和列簇下的所有数据
get.addFamily(column.getBytes());
Result result = table.get(get);
Cell[] cells = result.rawCells();
for (Cell cell:cells)
{
//获取列簇名称
String cf = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength());
//获取列的名称
String colunmName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());
//获取值
String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
if(value!=null)
System.out.println(cf+":"+colunmName+"=>"+value);
else
System.out.println(cf+":"+colunmName+"=>"+"null");
}
}
table.close();
}
public static void main(String[] args) throws IOException {
//用HBaseConfiguration.create();创建HBase的配置
Configuration configuration = HBaseConfiguration.create();
//用ConnectionFactory.createConnection创建HBase()连接
connection = ConnectionFactory.createConnection(configuration);
// 创建表,要给予HBase获取Admin对象
admin = connection.getAdmin();
String tablename = "WATER_BILL";
//1.创建表和列
// String[] filed = {"H1", "H2", "H3"};
// createTable(tablename, filed);
//2.向表tableName、行row(用S_Name表示)和字符串数组fields指定的单元格中添加对应的数据values。
// 其中,fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。
// 例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,
// 字符串数组fields为{“Score:Math”, ”Score:Computer Science”, ”Score:English”},数组values存储这三门课的成绩。
// String[] fields = {"H1:S_NO", "H1:S_Name", "H1:S_Sex", "H1:S_Age"};
// String[] values = {"2015001", "Zhangsan", "male", "23"};
// String row = "Zhangsan";
// addRecord(tablename, row, fields, values);
//3.浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。
// 要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;
// 当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。
String column = "H1:S_Name";
String rowkey = "Zhangsan";
scanColumn(tablename, rowkey, column);
}
3、修改列、列名的值
public static void modifyData(String tableName,String rowkey,String column,String value) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
//修改操作
Put put = new Put(Bytes.toBytes(rowkey));
String[] split = column.split(":");
String columnFamily=split[0];
String columnName=split[1];
put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName),Bytes.toBytes(value));
table.put(put);
//查看修改后的数据
Get get = new Get(rowkey.getBytes());
get.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName));
Result result = table.get(get);
byte[] value2 = result.getValue(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName));
if(Bytes.toString(value2)!=null)
System.out.println(columnFamily+":"+columnName+"=>"+Bytes.toString(value2));
else
System.out.println("null");
System.out.println("修改成功!!");
table.close();
}
public static void main(String[] args) throws IOException {
//用HBaseConfiguration.create();创建HBase的配置
Configuration configuration = HBaseConfiguration.create();
//用ConnectionFactory.createConnection创建HBase()连接
connection = ConnectionFactory.createConnection(configuration);
// 创建表,要给予HBase获取Admin对象
admin = connection.getAdmin();
String tablename = "WATER_BILL";
//1.创建表和列
// String[] filed = {"H1", "H2", "H3"};
// createTable(tablename, filed);
//2.向表tableName、行row(用S_Name表示)和字符串数组fields指定的单元格中添加对应的数据values。
// 其中,fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。
// 例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,
// 字符串数组fields为{“Score:Math”, ”Score:Computer Science”, ”Score:English”},数组values存储这三门课的成绩。
// String[] fields = {"H1:S_NO", "H1:S_Name", "H1:S_Sex", "H1:S_Age"};
// String[] values = {"2015001", "Zhangsan", "male", "23"};
// String row = "Zhangsan";
// addRecord(tablename, row, fields, values);
//3.浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。
// 要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;
// 当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。
// String column = "H1:S_Name";
// String rowkey = "Zhangsan";
// scanColumn(tablename, rowkey, column);
//4.modifyData(S修改表tableName,行row(可以用学生姓名S_Name表示),
// 列column指定的单元格的数据tring tableName, String row, String column)
String colum = "H1:S_Name";
String rowkey = "Zhangsan";
String value = "XiaoFengZai";
modifyData(tablename, rowkey, colum, value);
}
3、删除指定行的内容
public static void deleteRow(String tableName, String row) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
//删除一条rowkey记录
Delete delete = new Delete(Bytes.toBytes(row));
table.delete(delete);
table.close();
}
public static void main(String[] args) throws IOException {
//用HBaseConfiguration.create();创建HBase的配置
Configuration configuration = HBaseConfiguration.create();
//用ConnectionFactory.createConnection创建HBase()连接
connection = ConnectionFactory.createConnection(configuration);
// 创建表,要给予HBase获取Admin对象
admin = connection.getAdmin();
String tablename = "WATER_BILL";
//1.创建表和列
// String[] filed = {"H1", "H2", "H3"};
// createTable(tablename, filed);
//2.向表tableName、行row(用S_Name表示)和字符串数组fields指定的单元格中添加对应的数据values。
// 其中,fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。
// 例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,
// 字符串数组fields为{“Score:Math”, ”Score:Computer Science”, ”Score:English”},数组values存储这三门课的成绩。
// String[] fields = {"H1:S_NO", "H1:S_Name", "H1:S_Sex", "H1:S_Age"};
// String[] values = {"2015001", "Zhangsan", "male", "23"};
// String row = "Zhangsan";
// addRecord(tablename, row, fields, values);
//3.浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。
// 要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;
// 当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。
// String column = "H1:S_Name";
// String rowkey = "Zhangsan";
// scanColumn(tablename, rowkey, column);
//4.modifyData(S修改表tableName,行row(可以用学生姓名S_Name表示),
// 列column指定的单元格的数据tring tableName, String row, String column)
// String colum = "H1:S_Name";
// String rowkey = "Zhangsan";
// String value = "XiaoFengZai";
// modifyData(tablename, rowkey, colum, value);
//5.删除指定的rowkey内容
String rowkey="Zhangsan";
deleteRow(tablename,rowkey);
admin.close();
connection.close();
}
4、删除指定的表
public void deleteTable(String tablename)throws IOException
{
TableName tableName=TableName.valueOf("WATER_BILL");
if(admin.tableExists(tableName))
{
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
}
java 2015001_hbase的Java操作相关推荐
- java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...
- java对cookie的操作
原文:http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html java对cookie的操作比较简单,主要介绍下建立cookie ...
- java大文件读写操作
转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...
- java对文本文件进行操作:读取、修改、添加、删除、重命名等
java对文本文件进行操作:读取.修改.添加.删除.重命名等 Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 .字符类型的输入和输出流. IO是指对数据流的输入和输出 ...
- 利用Java存储过程简化数据库操作
利用Java存储过程沟通SQL.XML.Java.J2EE和Web服务. 存储过程(stored procedure)允许将运行于数据库层中的持久性逻辑与运行于中间层中的商务逻辑有效地分离开来. ...
- Java最全文件操作实例汇总
本文实例汇总了Java文件操作.分享给大家供大家参考,具体如下: 1.创建文件夹 ? 1 2 3 4 5 6 7 8 9 10 11 //import java.io.*; File myFolder ...
- JAVA中用 SQL语句操作小结
1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1, ...
- JAVA API实现HDFS操作(二)操作函数
说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...
- 用Java API实现HDFS操作(三)问题汇总
说明:整理博主用Java API实现HDFS操作时遇到的问题 问题 为搭建分布式操作环境–在ubuntu16中安装IDEA2021.tomcat9.0.hadoop2.7,建议分配磁盘空间30G及以上 ...
- java对cookie的操作_java对cookie的操作
Java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 建立一个无生命周期的cookie,即随着浏览器的关闭即 ...
最新文章
- 非常精美的纸艺术作品欣赏(上篇)
- 使用脚本创建查找修改销毁游戏对象
- 图数据库:AgensGraph
- 中国大学MOOC-陈越、何钦铭-数据结构-2019春期末考试(题目+部分解答)
- OC基础1:一些基本概念
- python制作查询工具发给别人使用_利用Python制作简单的小程序:IP查
- 【通信】基于matlab GUI循环码编译码器【含Matlab源码 692期】
- 解决WindowsBuilder不能打开别人代码的design窗口(不显示Source 和 Design)
- 按键精灵手机助手之数学函数
- jquery outerhtml
- table表格固定表头
- python 折线图 百分比_Python数据可视化 - 使用Matplotlib库绘制点图、折线图、条状图与饼图...
- 鸡啄米:C++编程入门系列之四(数据类型)
- 我和CSDN的故事--学无止境
- 有没有人被向量空间、内积空间、欧式空间、希尔伯特空间、巴拿赫空间概念折磨的?
- 拾色器 插件 Farbtastic
- 电脑自动开机win11设置教程
- 多读书,更要多多悦读
- 海苔和紫菜有什么区别?
- Clean Code 读书笔记三——方法(函数)
热门文章
- 如何解决xp进系统的时候需要按enter键
- (转自珊珊博客)甜甜蜜蜜走台湾 Day3
- python调用接口获取文件_Python中做接口自动化如何读取配置ini文件
- 3d slicer调整窗宽窗位_3D游戏模型制作技巧,掌握这些技术你也能进鹅厂!
- pythonscrapy爬虫_使用Python3和Scrapy进行网站图片爬虫自动下载
- arm linux dma 编程 request_dma,Linux驱动技术技术之一:DMA编程
- 滚动率分析(Roll Rate Analysis)
- java启动脚本_java启动脚本
- python遗传算法最短路径问题有几种类型_用遗传算法求解最短路径问题.pdf
- icem合并面网格_详解Flunet Meshing:高级网格划分工具中的“扫地僧”