文章目录
HBase基础编程
一、实验目标
- 掌握如何通过HBase shell命令来设计HBase表结构实例,从而理解HBase的列式存储结构
- 掌 握 java编程创建HBase表和删除HBase表。
二、实验要求及注意事项
- 给出每个实验的主要实验步骤、实现代码和测试效果截图。
- 对本次实验工作进行全面的总结分析。
- 所有程序需要本地测试和集群测试,给出相应截图。
- 建议工程名,类名或包名等做适当修改,显示个人学号或者姓名
三、实验内容及步骤
实验任务1:HBase表设计。通过HBase shell命令来设计并创建三张相关的表,其中后两张表可以关联起来,例如店铺与商品表。建议自拟表名和表内容。
主要实现步骤和运行效果图:
完整程序
create 'shop','info','item'
put 'shop','s_01','item:item_id','i_01'
put 'shop','s_01','info:name','iphone'
put 'shop', 's_01','info:address','tianmao'
put 'shop','s_01','info:regdate','11-11'
create 'Item','info','item'
put 'Item','i_01','item:shop_id','s_01'
put 'Item','i_01','info:name','iphone'
put 'Item','i_01','info:price','4534'
put 'Item','i_01','info:detail','ios10.3.2'
put 'Item','i_01','info:title','phoneOfApple'
程序分析
这是一组HBase的命令,主要是创建和操作两个表格——‘shop’和’Item’。
首先,在’shop’表格中添加一行数据,该行的行键为’s_01’,列限定符为’item:item_id’,值为’i_01’。然后,再在’shop’表格中添加三个列:‘info:name’,值为’iphone’;‘info:address’,值为’tianmao’;‘info:regdate’,值为’11-11’。
接下来,创建’Item’表格,并添加一行数据。该行的行键为’i_01’,列限定符为’item:shop_id’,值为’s_01’。然后,再添加四个列:‘info:name’,值为’iphone’;‘info:price’,值为’4534’;‘info:detail’,值为’ios10.3.2’;‘info:title’,值为’phoneOfApple’。
运行结果
实验任务2:使用Java编程创建表和删除表,表名和列族自拟。
主要实现步骤和运行效果图:
完整程序
WjwCreateTable
packagehbase;importorg.apache.hadoop.hbase.client.HBaseAdmin;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.hbase.*;publicclassWjwCreateTable{staticConfiguration conf;static{
conf =newConfiguration();}publicstaticvoidcreatetb(String tbname,String[] tbfamily)throwsException{HBaseAdmin admin =newHBaseAdmin(conf);HTableDescriptor hd =newHTableDescriptor(tbname);for(int i=0;i<tbfamily.length;i++){
hd.addFamily(newHColumnDescriptor(tbname));}if(admin.tableExists(tbname)){System.out.println(tbname);}else{
admin.createTable(hd);System.out.println("create table success");}}publicstaticvoiddeltb(String tbname)throwsException{HBaseAdmin admin =newHBaseAdmin(conf);
admin.disableTable(tbname);
admin.deleteTable(tbname);if(admin.tableExists(tbname)){System.out.println(tbname+"is not exists");}else{System.out.println("success del");}}publicstaticvoidmain(String[] args){// TODO Auto-generated method stubString str[]={"cf1"};createtb("wjw01", str);}}
这是一个使用HBase Java API创建和删除表格的示例程序。
首先,在静态代码块中创建了一个Configuration对象,这是一个包含HBase的配置信息的对象。
然后,定义了一个名为’createtb’的方法,该方法接收两个参数:表格名和表格列族名。在该方法中,首先通过HBaseAdmin类创建了一个HBaseAdmin对象,然后通过HTableDescriptor类创建了一个HTableDescriptor对象,用于描述表格的结构。接着,通过循环遍历表格列族名数组,添加每个列族并将其加入HTableDescriptor对象中。最后,判断该表是否已经存在,如果存在则打印出表格名,否则调用HBaseAdmin的createTable方法创建表格,并打印出"create table success"。
然后,定义了一个名为’deltb’的方法,该方法接收一个参数:表格名。在该方法中,同样通过HBaseAdmin类创建了一个HBaseAdmin对象,并调用其disableTable方法禁用该表格,然后调用其deleteTable方法删除该表格。最后,判断该表是否已经被删除,如果未删除则打印出表格名和"is not exists",否则打印出"success del"。
最后,在main方法中调用createtb方法创建了一个名为"wjw01",列族名为"cf1"的表格。
WjwDeleteTable
packagehbase;importjava. io.IOException;importorg. apache. hadoop. conf.*;importorg. apache. hadoop. hbase.HBaseConfiguration;importorg. apache. hadoop. hbase.MasterNotRunningException;importorg. apache. hadoop. hbase.ZooKeeperConnectionException;importorg. apache. hadoop. hbase. client.HBaseAdmin;importorg. apache. hadoop. hbase. client.HTable;publicclassWjwDeleteTable{publicConfiguration conf;publicHTable table;publicHBaseAdmin admin;publicvoidHBaseTest()throwsMasterNotRunningException,ZooKeeperConnectionException,IOException{
conf =HBaseConfiguration.create();
conf.set("hbase. master","master:60000");System. out.println(conf.get("hbase. master"));
conf.set("hadoop. zkk. property. clientPort","2181");System. out.println(conf.get("hadoop. zkk. property. clientPort"));
conf.set("hbase. zookeeper. quorum","master");System. out.println(conf.get("hbase. zookeeper. quorum"));
admin=newHBaseAdmin(conf);
table =newHTable(conf,"test01");}publicstaticvoidmain(String[] args)throwsException{WJW02 hc =newWjwDeleteTable();hc. HBaseTest();}}
这是一个使用HBase Java API删除表的示例程序。
首先,在HBaseTest方法中创建了一个Configuration对象,然后通过该对象设置了HBase集群的master和zookeeper相关参数,包括hbase.master、hadoop.zkk.property.clientPort和hbase.zookeeper.quorum。然后,创建了一个HBaseAdmin对象和一个HTable对象。
接着,在main方法中创建了一个WjwDeleteTable对象,并调用其HBaseTest方法进行HBase连接测试。
运行结果
附:系列文章
实验文章目录直达链接实验01Hadoop安装部署https://want595.blog.csdn.net/article/details/132767284实验02HDFS常用shell命令https://want595.blog.csdn.net/article/details/132863345实验03Hadoop读取文件https://want595.blog.csdn.net/article/details/132912077实验04HDFS文件创建与写入https://want595.blog.csdn.net/article/details/133168180实验05HDFS目录与文件的创建删除与查询操作https://want595.blog.csdn.net/article/details/133168734实验06SequenceFile、元数据操作与MapReduce单词计数https://want595.blog.csdn.net/article/details/133926246实验07MapReduce编程:数据过滤保存、UID 去重https://want595.blog.csdn.net/article/details/133947981实验08MapReduce 编程:检索特定群体搜索记录和定义分片操作https://want595.blog.csdn.net/article/details/133948849实验09MapReduce 编程:join操作和聚合操作https://want595.blog.csdn.net/article/details/133949148实验10MapReduce编程:自定义分区和自定义计数器https://want595.blog.csdn.net/article/details/133949522
版权归原作者 Want595 所有, 如有侵权,请联系我们删除。