Tutorial 03_分布式数据库HBASE
(一)编程实现一下内容,并用Hadoop提供的Shell命令完成相同任务:
编程实现:
(1)列出HBase所有表的相关信息,例如表名;
package tutorial01;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
public class ListTables
{
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void listTables() throws IOException
{
init();
HTableDescriptor[] hTableDescriptors = admin.listTables();
for (HTableDescriptor hTableDescriptor : hTableDescriptors)
{
System.out.println("表名:" + hTableDescriptor.getNameAsString());
}
close();
}
public static void init()
{
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try { connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }
catch (IOException e) { e.printStackTrace(); }
}
public static void close()
{
try { if (admin != null) { admin.close(); } if (connection != null) { connection.close(); } }
catch (IOException e) { e.printStackTrace(); }
}
public static void main(String[] args)
{
try { listTables(); }
catch (IOException e) { e.printStackTrace(); }
}
}
(2)在终端打印出所有表的相关数据;
package tutorial01;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
public class ListTableData
{
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void getData(String tableName) throws IOException
{
init();
Table table = connection.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner)
{
printRecoder(result);
}
close();
}
public static void printRecoder(Result result) throws IOException
{
for (Cell cell : result.rawCells())
{
System.out.print("行健: " + new String(CellUtil.cloneRow(cell)));
System.out.print("列簇: " + new String(CellUtil.cloneFamily(cell)));
System.out.print(" 列: " + new String(CellUtil.cloneQualifier(cell)));
System.out.print(" 值: " + new String(CellUtil.cloneValue(cell)));
System.out.println("时间戳: " + cell.getTimestamp());
}
}
public static void init()
{
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try { connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }
catch (IOException e) { e.printStackTrace(); }
}
public static void close()
{
try { if (admin != null) { admin.close(); } if (null != connection) { connection.close(); } }
catch (IOException e) { e.printStackTrace(); }
}
public static void main(String[] args)
{
try { getData("student"); }
catch (IOException e) { e.printStackTrace(); }
}
}
(3)向已经创建好的表添加和删除指定的列和族;
package tutorial01;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import java.io.IOException;
public class InsertRow
{
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void insertRow(String tableName, String rowKey, String colFamily, String col, String val) throws IOException
{
init();
Table table = connection.getTable(TableName.valueOf(tableName));
Put put = new Put(rowKey.getBytes());
put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
table.put(put);
table.close();
close();
}
public static void init()
{
configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }
catch (IOException e) { e.printStackTrace(); }
}
public static void close()
{
try { if (admin != null) { admin.close(); } if (null != connection) { connection.close(); } }
catch (IOException e) { e.printStackTrace(); }
}
public static void main(String[] args)
{
try { insertRow("student", "s001", "course", "math", "99"); }
catch (IOException e) { e.printStackTrace(); }
}
}
(4)清空指定的表的所有记录和数据;
(5)统计表的行数。
Shell命令实现:
(1)列出HBase所有表的相关信息,例如表名;
(2)在终端打印出所有表的相关数据;
(3)向已经创建好的表添加和删除指定的列和族;
(4)清空指定的表的所有记录和数据;
(5)统计表的行数。
Tutorial 03_分布式数据库HBASE的更多相关文章
- 分布式数据库hbase详解
新霸哥注意到了在人类随着计算机技术的发展,数据的存储量发生了很大的变化,可以用海量来形容,同时,存储的数据类型也是有多种多样的,网页,图片,视频,音频,电子邮件等等,所以在这中情况下以谷歌旗下的Big ...
- 【Hadoop】一、分布式数据库HBase简介
1.分布式数据库特点 说到数据库,我们最熟悉的是类似于mysql这样的关系型数据库,称为RDBMS.关系型数据库作为一种数据存储和数据检索的关键技术,它支持SQL语言的结构化查询,但是它天生不是为 ...
- 分布式数据库Hbase
HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HBase是Goog ...
- 分布式数据库 HBase
原文地址:http://www.oschina.net/p/hbase/ HBase 概念 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用 ...
- 分布式数据库HBase表设计
比较常用的数据库是关系型数据库,但很多场景下nosql数据库会更加擅长,从sql到nosql实施的第一步就是设计表结构,这是两种不同的思维方式,这里说下HBase表设计. 需求:需要一张stock表用 ...
- 云时代的分布式数据库:阿里分布式数据库服务DRDS
发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...
- 分布式数据库Google Spanner原理分析
Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) .Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的 ...
- 从NoSQL到NewSQL,谈交易型分布式数据库建设要点
在上一篇文章<从架构特点到功能缺陷,重新认识分析型分布式数据库>中,我们完成了对不同"分布式数据库"的横向分析,本文Ivan将讲述拆解的第二部分,会结合NoSQL与Ne ...
- 跨时代的分布式数据库 – 阿里云DRDS详解(转)
原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...
随机推荐
- qml demo分析(samegame-拼图游戏)
一.效果展示 相信大家都玩儿过连连看游戏,而且此款游戏也是闲时一款打发时间的趣事,那么接下来我将分析一款类似的游戏,完全使用qml编写界面,复杂逻辑使用js完成.由于此游戏包含4种游戏模式,因此本篇文 ...
- python使用魔法函数创建可切片类型
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import nu ...
- 微信公众号开发C#系列-9、多公众号集中管理
1.概述 通过前面8篇关于微信开发相关文章的学习,我们已经对微信常用开发有了一个比较深入的了解.前面的文章都是基于某一特定公众号的,在现实业务中同一单位个体运营着不至一个公众号,此时就需要对多个公众号 ...
- Generator和Async
引言 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还有一种常用的解决方案,它就 ...
- [Nodejs] node实现静态文件服务器
node 静态文件处理 一般后端进行静态文件处理都是使用 Apache nginx 等静态 web 服务器,但是既然使用 node 了,就用 node 实现以下静态服务器吧. 之前弄了不少充满艺术的数 ...
- sql小知识点
1]sql去重复 select * from View where SfzId in ())
- 用.net写Textbox控件关于数字的判断的二则方法
方法一.使用textboxSelected事件进行判断首界面源码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- python 自定义模块的发布和安装
[学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...
- tomcat,httpd 日志格式说明
tomcat 日志说明 配置文件server.xml 默认日志格式为 pattern="%h %l %u %t "%r" %s %b" 推荐使用 pattern ...
- Fundebug支持浏览器报警
摘要: 除了邮件报警和第三方报警,我们新增了浏览器报警功能. 邮件报警与第三方报警 Fundebug是专业的应用BUG监控服务,当您的线上应用,比如网页.小程序.Java等发生BUG时,我们会第一时间 ...