当前位置:   article > 正文

大数据——HBase数据库操作实例_hbase shell操作成绩表

hbase shell操作成绩表

大数据——四种数据库(MySQL,HBase,MongoDB,Redis)操作实例

问题描述:

                                                                    Student学生表

1. 根据上面给出的表格,用Hbase Shell模式设计student学生表格。

     a) 设计完后,用scan指令浏览表的相关信息,给出截图。

     b) 查询zhangsan 的Computer成绩,给出截图。

     c) 修改lisi的Math成绩,改为95,给出截图。

2. 根据上面已经设计出的student,用Hbase API编程。

     a) 添加数据:English:45 Math:89 Computer:100

    b) 获取scofield的English成绩信息

解决问题:

1. 根据上面给出的表格,用Hbase Shell模式设计student学生表格。

设计表代码:(复制粘贴代码时,要删除注释部分,下同)

$ ssh localhost //检测自己的ssh服务器设置

$ cd /usr/local/hadoop

$ ./sbin/start-dfs.sh  //启动Hadoop

$ jps     注:用以查看hadoop是否启动成功

$ cd /usr/local/hbase

$ bin/start-hbase.sh  //启动hbase

$ jps     注:用以查看hbase是否启动成功

$ bin/hbase shell  //打开hbase的shell操作

hbase(main):006:0> create 'student','score' //创建student,其包含一个列族score

hbase(main):007:0> put 'student','zhangsan','score:English','69' //添加行健,列限定符和写入单元格数据

hbase(main):008:0> put 'student','zhangsan','score:Math','86'

hbase(main):009:0> put 'student','zhangsan','score:Computer','77'

hbase(main):010:0> put 'student','lisi','score:English','55'

hbase(main):011:0> put 'student','lisi','score:Math','100'

hbase(main):012:0> put 'student','lisi','score:Computer','88'

对应的Linux终端运行截图:

a) 设计完后,用scan指令浏览表的相关信息,给出截图。

hbase(main):013:0> scan 'student' //查看student表中信息

对应的Linux终端运行截图:

b) 查询zhangsan 的Computer成绩,给出截图。

hbase(main):014:0> get 'student','zhangsan','score:Computer'//查询zhangsan Computer成绩

对应的Linux终端运行截图:

c) 修改lisi的Math成绩,改为95,给出截图。

hbase(main):015:0> put 'student','lisi','score:Math','95' //修改lisiMath成绩,为95

hbase(main):016:0> get 'student','lisi','score:Math'

对应的Linux终端运行截图:

2. 根据上面已经设计出的student,用Hbase API编程

(1)与使用MySQL的JAVA客户端相类似,建立Java Project,但请注意,建立project时,所使用的执行环境JRE为J2SE-1.5,如下图方框所示

(2)在工程中导入外部jar包:这里只需要导入hbase安装目录中的lib文件中的所有jar包如果没有jar包,可下载:https://download.csdn.net/download/weixin_43042683/12439546)。如下图所示:

a) 添加数据:English:45 Math:89 Computer:100

(1)新建class,并将如下代码复制到.java文件中,调试运行,给出结果截图。

  1. import java.io.IOException;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.hbase.HBaseConfiguration;
  4. import org.apache.hadoop.hbase.TableName;
  5. import org.apache.hadoop.hbase.client.Admin;
  6. import org.apache.hadoop.hbase.client.Connection;
  7. import org.apache.hadoop.hbase.client.ConnectionFactory;
  8. import org.apache.hadoop.hbase.client.Put;
  9. import org.apache.hadoop.hbase.client.Table;
  10. public class hbase_insert {
  11. /**
  12. * @param args
  13. */
  14. //三个静态成员对象
  15. public static Configuration configuration;//管理HBase的配置信息
  16. public static Connection connection;//管理HBase的连接
  17. public static Admin admin; //管理HBase数据库的表信息
  18. public static void main(String[] args) {
  19. // TODO Auto-generated method stub
  20. configuration = HBaseConfiguration.create();//使用默认的HBase配置文件创建configuration configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");//连接hbase
  21. try{
  22. connection = ConnectionFactory.createConnection(configuration);
  23. admin = connection.getAdmin();
  24. }catch (IOException e){
  25. e.printStackTrace();
  26. }
  27. try {//插入的信息
  28. insertRow("student","scofield","score","English","45");
  29. insertRow("student","scofield","score","Math","89");
  30. insertRow("student","scofield","score","Computer","100");
  31. } catch (IOException e) {//异常处理
  32. // TODO Auto-generated catch block
  33. e.printStackTrace();
  34. }
  35. close();
  36. }
  37. public static void insertRow(String tableName,String rowKey,String colFamily,
  38. String col,String val) throws IOException {
  39. Table table = connection.getTable(TableName.valueOf(tableName));
  40. Put put = new Put(rowKey.getBytes());
  41. put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
  42. table.put(put);
  43. table.close();
  44. }
  45. //关闭连接
  46. public static void close(){
  47. try{
  48. if(admin != null){
  49. admin.close();
  50. }
  51. if(null != connection){
  52. connection.close();
  53. }
  54. }catch (IOException e){
  55. e.printStackTrace();
  56. }
  57. }
  58. }

 Java运行结果:

 

hbase检验结果:使用scan ‘student’查看数据是否被添加成功

b) 获取scofield的English成绩信息

(1)获取scofield的English成绩信息,可以采用如下代码,调试运行,给出截图

  1. import java.io.IOException;
  2. import org.apache.hadoop.conf.Configuration;
  3. import org.apache.hadoop.hbase.Cell;
  4. import org.apache.hadoop.hbase.CellUtil;
  5. import org.apache.hadoop.hbase.HBaseConfiguration;
  6. import org.apache.hadoop.hbase.TableName;
  7. import org.apache.hadoop.hbase.client.Admin;
  8. import org.apache.hadoop.hbase.client.Connection;
  9. import org.apache.hadoop.hbase.client.ConnectionFactory;
  10. import org.apache.hadoop.hbase.client.Get;
  11. import org.apache.hadoop.hbase.client.Put;
  12. import org.apache.hadoop.hbase.client.Result;
  13. import org.apache.hadoop.hbase.client.Table;
  14. public class hbase_query {
  15. /**
  16. * @param args
  17. */
  18. //三个静态成员对象
  19. public static Configuration configuration;//管理HBase的配置信息
  20. public static Connection connection;//管理HBase的连接
  21. public static Admin admin; //管理HBase数据库的表信息
  22. public static void main(String[] args) {
  23. // TODO Auto-generated method stub
  24. configuration = HBaseConfiguration.create();//使用默认的HBase配置文件创建configuration
  25. configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");//连接hbase
  26. try{
  27. connection = ConnectionFactory.createConnection(configuration);//连接hbase
  28. admin = connection.getAdmin();
  29. }catch (IOException e){
  30. e.printStackTrace();
  31. }
  32. try {
  33. getData("student","scofield","score","English");//获取scofield的English成绩信息
  34. } catch (IOException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. }
  38. close();
  39. }
  40. public static void getData(String tableName,String rowKey,String colFamily,
  41. String col)throws IOException{
  42. Table table = connection.getTable(TableName.valueOf(tableName));
  43. Get get = new Get(rowKey.getBytes());
  44. get.addColumn(colFamily.getBytes(),col.getBytes());
  45. Result result = table.get(get);//从指定的行的某些单元格中取出相应的值
  46. showCell(result);
  47. table.close();
  48. }
  49. public static void showCell(Result result){//显示结果信息函数
  50. Cell[] cells = result.rawCells();
  51. for(Cell cell:cells){
  52. System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
  53. System.out.println("Timetamp:"+cell.getTimestamp()+" ");
  54. System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
  55. System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
  56. System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
  57. }
  58. }
  59. //关闭连接
  60. public static void close(){
  61. try{
  62. if(admin != null){
  63. admin.close();
  64. }
  65. if(null != connection){
  66. connection.close(); }
  67. }catch (IOException e){
  68. e.printStackTrace();
  69. }
  70. }
  71. }

Java 运行结果:

PS:最后,别忘了停止hbase

hbase(main):018:0> hbase(main):025:0> exit

$ bin/stop-hbase.sh

linux终端运行截图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/619134
推荐阅读
相关标签
  

闽ICP备14008679号