HBase 开发:使用Java操作HBase 第1关:创建表

这篇具有很好参考价值的文章主要介绍了HBase 开发:使用Java操作HBase 第1关:创建表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了完成本关任务,你需要掌握:1.如何使用Java连接HBase数据库,2.如何使用Java代码在HBase中创建表。

如何使用Java连接HBase数据库

Java连接HBase需要两个类:

  • HBaseConfiguration
  • ConnectionFactory

HBaseConfiguration

要连接HBase我们首先需要创建Configuration对象,这个对象我们需要通过HBaseConfigurationHBase配置)对象来进行创建,HBaseConfiguration看名字我们就能猜到它的用途:读取指定路径下hbase-site.xmlhbase-default.xml的配置信息

具体用法:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象

ConnectionFactory

获取到连接对象Connextion我们就算连接上了HBase了,怎么获取呢?

通过ConnectionFactory(连接工厂)的方法我们就能获取到Connection(连接对象)了。

具体用法:

Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象

使用这两个步骤就能完成连接HBase了。

注意:在1.0之前的版本HBase是使用HBaseAdminHTable等来操作HBase的,但是在1.0之后的版本中这些被弃用了,新的客户端API更加干净简洁,本文使用的HBase2.1.1版本(18年10月发布)的,

创建表

要创建表我们需要首先创建一个Admin对象,然后让它来创建一张表:

Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象
TableName tableName = TableName.valueOf("test");//定义表名
HTableDescriptor htd = new HTableDescriptor(tableName);//定义表对象
HColumnDescriptor hcd = new HColumnDescriptor("data");//定义列族对象
htd.addFamily(hcd); //添加
admin.createTable(htd);//创建表

HBase2.X创建表

上述创建表的方法是HBase1.X版本的方式,而在HBase2.X的版本中创建表使用了新的API,创建表关键代码如下:

TableName tableName = TableName.valueOf("test");//定义表名
//TableDescriptor对象通过TableDescriptorBuilder构建;
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family);//设置列族
admin.createTable(tableDescriptor.build());//创建表

2.X版本中主要是HTableDescriptor对象被弃用,取而代之的是TableDescriptor对象,TableDescriptor对象通过TableDescriptorBuilder构建;

TableName tableName = TableName.valueOf("test");
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);

然后添加列簇方法变更:

ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family); //设置列族

最后由Admin对象进行创建表操作:

admin.createTable(tableDescriptor.build());

值得咱们注意的是,如果你的HBase环境是1.X的那么你只能使用第一种方式来创建表,如果是2.X的版本,那么两种方式你都可以使用(本实训使用的 HBase2.1.1版本,所以两种都可用)。

编程要求

好了,到你啦,使用本关知识,在右侧编辑器begin-end处补充代码,请你编写一个Java程序,在HBase中创建表dept,emp,列都为:data

package step1;
import java.io.IOException;
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.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
/**
* HBase 1.0 version of ExampleClient that uses {@code Connection},
* {@code Admin} and {@code Table}.
*/
public class Task{
public void createTable()throws Exception{
/********* Begin *********/
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
try {
// Create table
Admin admin = connection.getAdmin();
try {
TableName tableName = TableName.valueOf("dept");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder tableDescriptor =
TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();// 构建列族对象
tableDescriptor.setColumnFamily(family); // 设置列族
admin.createTable(tableDescriptor.build()); // 创建表


TableName emp = TableName.valueOf("emp");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder empDescriptor =
TableDescriptorBuilder.newBuilder(emp);
ColumnFamilyDescriptor empfamily =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();// 构建列族对象
empDescriptor.setColumnFamily(empfamily); // 设置列族
admin.createTable(empDescriptor.build()); // 创建表
} finally {
admin.close();
}
} finally {
connection.close();
}
/********* End *********/
}
}

测试说明

注意:

点击测评之前,请先开启Hadoopstart-dfs.sh)和HBasestart-hbase.sh),并且需要等待HBase初始化完成(20秒左右),否则无法在HBase中创建表。

怎么查看HBase初始化成功了呢?

输入hadoop fs -ls /hbase有如下结果即可

如果启动过程中出现: datanode running as process 214. Stop it first.说明Hadoop的进程还没有被杀死。

需要我们重新stop-dfs.shstop-hbase.sh,然后在重启。

start-dfs.sh
start-hbase.sh
hadoop fs -ls /hbase

第1关:创建表,hbase,大数据,Educoder,hbase,hadoop,大数据文章来源地址https://www.toymoban.com/news/detail-813581.html

到了这里,关于HBase 开发:使用Java操作HBase 第1关:创建表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HBase Java API 开发:批量操作 第2关:批量删除数据

    删除单行数据 删除一行数据很简单,我们来看个示例: 这段代码就可以删除行键为 row1 的行。 删除多行数据 如何删除多行数据呢? 相信你已经猜到了,既然 get() 方法有重载方法,那应该 delete() 方法也有,确实: 这样就可以删除多行数据啦。 编程要求 还等啥,亲自试一试

    2024年02月05日
    浏览(46)
  • 3、HBase的java API基本操作(创建、删除表以及对数据的添加、删除、查询以及多条件查询)

    1、hbase-2.1.0介绍及分布式集群部署、HA集群部署、验证、硬件配置推荐 2、hbase-2.1.0 shell基本操作详解 3、HBase的java API基本操作(创建、删除表以及对数据的添加、删除、查询以及多条件查询) 4、HBase使用(namespace、数据分区、rowkey设计、原生api访问hbase) 5、Apache Phoenix(5.0.0-5.

    2024年02月08日
    浏览(48)
  • Hbase数据库完全分布式搭建以及java中操作Hbase

    基础的环境准备不在赘述,包括jdk安装,防火墙关闭,网络配置,环境变量的配置,各个节点之间进行免密等操作等。使用的版本2.0.5. 参考官方文档 分布式的部署,都是在单节点服务的基础配置好配置,直接分发到其他节点即可。 jdk路径的配置,以及不适用内部自带的zk. 配

    2024年02月03日
    浏览(39)
  • 在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行

    在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行。以下是使用HBase Shell进行查询的一些示例: 单行查询:获取指定行键的数据。 扫描表:按行范围获取表中的多个行的数据。 过滤器查询:使用过滤器指定查询条件来获取数据。 列族查询:获取指

    2024年01月21日
    浏览(33)
  • Python使用多线程操作tif影像和HBase数据库

    本文介绍使用Python的多线程技术,提高happybase模块和gdal模块的效率,从tif格式的影像文件中读取数据,并将其存储到HBase数据库中。主要步骤包括: 准备工作:安装Python环境,安装happybase模块和gdal模块,安装HBase数据库,并准备tif影像文件。 读取tif影像数据:使用readTif函数

    2024年02月09日
    浏览(33)
  • 【Hbase】hbase的java api操作(3)

    目录 这篇文章的源码比较多,需要的私信我 需求与数据集 准备工作 下载安装maven 下载安装idea 配置国内的maven镜像库 创建一个maven工程 修改pom文件,导入相关的依赖 复制Hadoop的配置文件core-site.xml和HBase的配置文件hbase-site.xml到resources目录中 创建包结构 创建hbase连接类及管理

    2023年04月12日
    浏览(25)
  • 【报错-大数据技术-Hbase & Ranger】hbase创建、删除(表、命名空间)无权限问题,但是向表put、get、scan数据报错

    1、问题描述 使用hbase shell执行创建命名空间、创建表、插入数据、获取数据、查看数据、删除命名空间、删除表等命令操作,发现可以创建命名空间、创建表、删除命名空间、删除表,但是插入数据、获取数据、查看数据等操作却报没有权限的问题,但是我已在Ranger上赋予用

    2024年03月15日
    浏览(81)
  • 数据批量操作:如何在HBase中进行批量操作

    HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。它是Hadoop生态系统的一部分,可以与HDFS、MapReduce、ZooKeeper等其他组件集成。HBase适用于大规模数据存储和实时数据访问场景,如日志记录、实时数据分析、实时数据流处理等。 在HBase中,数据以列族

    2024年04月23日
    浏览(23)
  • 《Hadoop核心技术》Hbase集群部署,创建表,删除表,插入数据,查询数据

    额前言:         我是一名正在学习《Hadoop核心技术》的学生,今天跟大家分享一下在虚拟机上在Hadoop集群中用Hbase进行简单的增删查 可以进行随机访问的存取和检索数据的存储平台         HBase 是一个开源的、分布式的、版本化的 NoSQL 数据库(也即非关系型数据库

    2024年02月03日
    浏览(33)
  • HBase的数据批量操作与事务处理

    HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。它是Hadoop生态系统的一部分,可以与HDFS、MapReduce、ZooKeeper等组件集成。HBase具有高可用性、高可扩展性和高性能等特点,适用于大规模数据存储和实时数据处理。 在大数据时代,数据的批量操作和

    2024年02月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包