Java调用大数据接口,学习Hadoop第二十八课(java通过调用接口来操作HBase)
上节课我们一起简单学习了HBase的一些理论,这节课我们一起学习用java调HBase的接口来操作HBase。
我们首先建一个工程,这里我们还用原始的新建一个lib包。然后我们把下载的hbase-0.96.2-hadoop2-bin.tar.gz包解压,解压后有个lib包,我们把lib包下的jar包都拷贝到工程的lib目录下并Build path到工程当中。下图当中我只是截取了jar包的一部分。
下面我把代码粘贴出来。
package com.myhbase;
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.TableName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class HBaseDemo {
public static void main(String[] args) throws Exception {
//首先得到HBase的配置对象
Configuration conf=HBaseConfiguration.create();
//配置Client连向谁,我们的Client连向的是zookeeper,因此我们配置的是zookeeper的信息,这些信息存在hbase-site.xml当中。
//我们会觉得不可思议,建HBase表,竟然Client连的既不是HMaster也不是HRegionServer,而是zookeeper,其实Client连zookeeper
//zookeeper只是负责协调,真正执行建表语句的还是HMaster,只不过zookeeper帮我们去找到HMaster并告诉它应该做什么了而已。
conf.set("hbase.zookeeper.quorum","itcast04:2181,itcast05:2181,itcast06:2181");
//要创建HBase表,我们需要HBaseAdmin对象
HBaseAdmin admin=new HBaseAdmin(conf);
//admin的create方法接收的参数是一个HTableDescriptor对象,因此我们需要先获取HTableDescriptor,
//我们给表起名为peoples(人类)
HTableDescriptor htd= new HTableDescriptor(TableName.valueOf("peoples"));
//我们还需要给表描述对象添加一些属性,我们在建表的时候会创建列族,首先我们创建一个名叫"info"的列族。
HColumnDescriptor hcd_info=new HColumnDescriptor("info");
//每个列族可以指定最大的版本存储数量,这里我们给列族"info"设置版本最大存储数量是3
hcd_info.setMaxVersions(3);
//接着我们再创建第二个列族
HColumnDescriptor hcd_data=new HColumnDescriptor("data");
//创建完两个列族,我们需要把列族添加到表的描述对象当中
htd.addFamily(hcd_info);
htd.addFamily(hcd_data);
//这时我们开始创建表,前面已经设置了一些属性值,因此生成的表便会带一些属性的。
admin.createTable(htd);
//用完admin对象要记得关闭
admin.close();
}
}
我们执行上面的代码,在Console控制台我们会看到如下所示的信息,其实这不算问题,这只是Windows和Linux平台不同而报的异常,程序捕捉到了该异常没有抛出来,只是打印出来了而已。这不影响我们的执行结果。
2016-11-03 00:49:34,201
ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
at org.apache.hadoop.util.Shell.(Shell.java:293)
at org.apache.hadoop.util.StringUtils.(StringUtils.java:76)
at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)
at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)
at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.(ZooKeeperWatcher.java:159)
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.(ZooKeeperWatcher.java:134)
at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.(ZooKeeperKeepAliveConnection.java:43)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:806)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.(HConnectionManager.java:633)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:387)
at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:366)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:247)
at org.apache.hadoop.hbase.client.HBaseAdmin.(HBaseAdmin.java:183)
at com.myhbase.HBaseDemo.main(HBaseDemo.java:21)
我们到管理界面来看看是不是有我们刚才生成的表,我输入的地址是169.254.254.10:60010来访问其中169.254.254.10是我的itcast01的IP地址,你输入你itcast01的IP地址。60010是HBase的默认端口。如下图所示,可以看到,Tables当中已经有我们刚才生成的peoples表了,而且列族的名字,版本数量都一致,说明我们通过java来建表的操作成功了!!
这节课我们就一起学习到这里。
Java调用大数据接口,学习Hadoop第二十八课(java通过调用接口来操作HBase)相关推荐
- HLS第二十八课(UG871,接口综合)
接口的返回值,入口参数,都是需要用pragma约束的. 首先来回顾一下接口. a clock and reset have been added to the design: ap_clk and a ...
- Java、大数据开发学习要点(持续更新中...)
Java.大数据开发学习要点 这里有作者本人学习Java.大数据开发时的详细知识记录,随时根据学习状态更新. 以下是关于
- NeHe OpenGL第二十八课:贝塞尔曲面
NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink. ...
- java转大数据的学习路线
不要错过文末彩蛋] 申明: 本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学. 前言: 一.背景介绍 二.大数 ...
- 大数据技术之Hadoop(HDFS)第2章 HFDS的Shell操作
1)基本语法 bin/hadoop fs 具体命令 2)命令大全 [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs [-appendToFile < ...
- java 实现类转接口_JAVA 基础 / 第二十九课:接口与继承 / JAVA中的对象转型
2018-03-19 一.明确引用类型与对象类型的概念 引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是ADHero 引用也是 ...
- dto java_Java学习笔记(十八)——Java DTO
[前面的话] 在和技术人员的交流中,各种专业术语会出现,每次都是默默的记录下出现的术语,然后再去网上查看是什么意思.最近做项目,需要使用到DTO,然后学习一下吧. 这篇文章是关于Java DTO的,选 ...
- 大数据运维实战第十九课 Kafka 应用场景、集群容量规划、架构设计应用案例
Kafka 基础与入门 1. Kafka 基本概念 Kafka 官方的定义:是一种高吞吐量的分布式发布/订阅消息系统.这样说起来可能不太好理解,这里简单举个例子:现在是个大数据时代,各种商业.社交.搜 ...
- JAVA 基础 / 第二十八课:接口与继承 / 如何设计JAVA的接口?
2018-03-19 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击.这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么 ...
最新文章
- Java 9 揭秘(19. 平台和JVM日志)
- 蘋果全新MacBook價高質更精
- 乐视手机权限开启方法
- nginx搭建流媒体服务器
- [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
- 软件项目管理-构建之法-四周总结
- C#中split分隔字符串的应用
- Java项目开发全流程实践
- go修改服务器时间,Windows 配置时间同步服务器以及配置时间同步间隔
- android c++ http,开源一个C++实现的简单HTTP协议处理库
- 【优化算法】白鲨优化算法(WSO)【含Matlab源码 623期】
- 分期手续费率转换成年利率
- SpringCloud-SpringCloud Bus服务总线的介绍(Day9)
- C++动态数组类模板
- SQL经典50查询语句案例_7(查询学过“叶平”老师所教的所有课的同学的学号、姓名)
- ESP32 LVGL8.1 ——event 事件 (event 17)
- 让Python程序自动玩数独游戏,秒变最强大脑!
- word排版技巧:论文图表目录制作步骤。
- 公有ip地址和私有ip地址_如何查找您的私有和公共IP地址
- flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕功能