HBase 创建表 Java API 和 Shell 示例

⚡ 智能摘要

HBase 将数据存储在表中,您可以通过两种方式创建和管理这些表:通过…… Java 使用 HTable 的 APIDescript或者使用 HBaseAdmin,或者直接在 HBase shell 中使用 create 命令。

  • Java API: 使用 HTable 在代码中创建表Descript或者,H列Descript或者,以及 HBaseAdmin。
  • 🐚 Shell 创建: create 命令根据名称和一个或多个列族创建一个表。
  • 🧬 列族: 每个表至少需要一个列族,该列族在创建表时定义。
  • 🔧 修改表格: alter 命令可以添加列族、设置版本或更改表范围属性。
  • 🗑️ 表格生命周期: 在修改或删除表之前,请先禁用该表,然后再启用该表以恢复写入操作。
  • 🤖 人工智能助手: AI 助手可以起草、创建、修改和删除命令,并审查列族设计。

使用 HBase 创建表 Java API 和 shell 命令示例

如何使用 Java API

在 HBase 中,表可以通过两种方式创建:通过…… Java API 和 HBase shell。本节内容涵盖以下内容: Java API 允许应用程序创建表并以编程方式加载数据,作为更大作业的一部分。

通过 Java API,我们可以在 HBase 中创建表,也可以使用以下方法将数据加载到表中 Java 编码。这里我们设置了两项内容:

  • 通过以下方式与 HBase 建立连接 Java API。
  • 运用 Eclipse HPMC胶囊 Java 编码、调试和测试。

以下是通过以下方式在 HBase 中创建表的步骤 Java API。

步骤 1)创建 Java 项目 Eclipse

在此步骤中,我们将创建一个 Java 项目 Eclipse 用于名为“HbaseConnection”的 HBase 连接。

新 Java 下面的项目对话框显示了正在设置的“HbaseConnection”项目:

Eclipse 全新发布 Java 使用项目对话框创建 HbaseConnection 项目 JavaSE-1.7环境

如果我们观察上面的截图:

  • 请在此框中输入项目名称。在本例中,项目名称为“HbaseConnection”。
  • 选中此复选框可设置默认保存位置。此处路径为 /home/hduser/work/HbaseConnection。
  • 勾选该方框 Java 这里的环境。在这种情况下。 JavaSE-1.7 是 Java 版。
  • 选择文件保存位置。在本例中,我们选择了第二个选项,“为源文件和类文件创建单独的文件夹”。
  • 单击“完成”按钮,即可在 [此处应填写项目路径] 创建“HbaseConnection”项目。 Eclipse 并打开 Eclipse 主页。

步骤 2)配置构建路径 Eclipse

点击 Eclipse 在首页,按照以下步骤打开构建路径配置:

Right click on project -> Select Build Path -> Configure build path

下图显示了用于打开构建路径配置的右键菜单:

Eclipse 项目右键菜单选择“构建路径”,然后选择“配置构建路径”。

从上面的截图中可以看出:

  • 右键单击项目。
  • 选择构建路径。
  • 选择“配置构建路径”。

点击“配置构建路径”后,会打开另一个窗口,如下图所示。“库”选项卡用于将 HBase 和 Hadoop JAR 文件添加到项目中:

Eclipse Java 在“构建路径库”选项卡中添加外部 HBase 和 Hadoop JAR 文件

在此步骤中,我们将相关的 HBase JAR 文件添加到…… Java 项目如图所示。

  • 需要添加的重要 JAR 文件:hbase-0.94.8.jar 和 hadoop-core-1.1.2.jar。
  • 转到“图书馆”选项卡。
  • 点击“添加外部 JAR 文件”选项。
  • 选择所需的关键 JAR 文件。
  • 按下“完成”按钮,将这些文件添加到“src”目录中。 Java 项目隶属于图书馆。

添加 JAR 文件后,它们会出现在项目“src”目录下,如下所示:

Eclipse 项目资源管理器显示了项目源文件下新增的 HBase 和 Hadoop JAR 文件。

该项目下的所有 JAR 文件现在都已准备好与 Hadoop 生态系统一起使用。

步骤3)建立HBase连接

在此步骤中,使用 HBaseConnection.java 建立 HBase 连接。 Java 编码。

点击 Eclipse 顶部菜单,执行 Java 程序如下所示:运行 -> 以其他身份运行 -> Java 应用程序。以下菜单显示了正在启动的程序:

Eclipse 运行方式 Java 应用程序菜单启动 HBaseConnection 程序

  • 选择“运行”。
  • 选择“运行方式” Java 应用。
  • 这段代码通过以下方式建立与 HBase 的连接 Java API。
  • 运行这段代码后,HBase 中会创建一个名为“guru99”的表,其中包含两个列族,分别名为“education”和“projects”。目前,HBase 中仅创建了一个空的模式。

以下代码片段重点介绍了 HTable。Descript或者,以及构建表架构的 addFamily 调用:

Java 使用 HTable 的代码Descript或者使用 addFamily 定义 guru99 表,其中包含教育和项目列族。

从上面的截图中可以看出,我们正在执行以下功能:

  • 使用 HTableDescript或者,我们可以在 HBase 中创建“guru99”表。
  • 使用 addFamily 方法,我们将“education”和“projects”作为列族添加到“guru99”表中。

以下代码将建立与 HBase 的连接,并创建包含两个列族的“guru99”表。请将此代码放在 HBaseConnection.java 文件中:

// Place this code inside Hbase connection
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.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

这是运行 HBaseConnection.java 之前必须添加到其中的代码。 Java 程序。

运行此程序后,它将与 HBase 建立连接,进而创建一个带有列名的表。

  • 表名为“guru99”。
  • 列族包括“教育”和“项目”。

步骤4)检查HBase中创建的表

我们可以使用 HBase shell 模式和“list”命令来检查 HBase 中“guru99”表是否创建了两个列族。“list”命令会列出 HBase 中所有已创建的表的信息。

在 HBase shell 中运行 list 命令可以确认新表的存在,如下所示:

HBase shell list 命令的输出显示已创建 guru99 表

  • Code 在 HBase shell 中执行“list”命令进行检查。
  • 如果我们运行“list”命令,它会显示在HBase中创建的表。在本例中,我们可以看到创建了“guru99”表。

HBase 使用 Shell 创建表

除了 Java 使用 API,您可以直接从 HBase shell 创建表,这是设置表进行快速测试的最快方法。使用 shell 在 HBase 中创建表的语法如下:

Syntax: create <tablename>, <columnfamilyname>

例子:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

以上示例说明了如何在 HBase 中创建符合各列族规范的指定名称的表。此外,我们还可以向其中传递一些表级属性。

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

这里,{NAME=>'Edu', VERSIONS=>…} 代码块设置了一个名为“Edu”的列族及其保留的单元格版本数。较大的数字仅用于示例;实际上,VERSIONS 的值通常较小,例如 3 或 5。

列出、描述和验证 HBase 表

在 HBase 中创建表只是处理表的第一步。一旦创建了“guru99”表,就可以使用一些通用命令来检查表并确认其状态,然后再进行读取、写入或修改数据的操作。所有这些命令都可以从以下位置运行: HBase 外壳.

list 命令会返回 HBase 中的所有用户表:

hbase> list

describe 命令显示表的结构,包括列族以及当前是否启用:

hbase> describe 'guru99'

exists 命令检查表是否存在,而 is_enabled 命令报告表是否允许写入:

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

这些只读检查可以随时安全运行。它们是确认表已正确创建并在加载数据前检查其列族的最快捷方法。

修改 HBase 表

HBase 表的架构在创建后并非固定不变。`alter` 命令会在不重新创建表的情况下更改表的列族和表级属性。根据您的 HBase 版本,您可能需要先禁用该表,然后再运行 `alter` 命令并重新启用它。

要向“guru99”表中添加新的列族:

hbase> alter 'guru99', {NAME => 'contact'}

设置列族保留的版本数:

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

要从表中删除列族:

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

您还可以更改表范围属性。例如,将表标记为只读,或将最大区域文件大小设置为 128 MB:

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

因为 alter 会重写模式,所以在生产表上仔细规划更改,然后使用 describe 确认结果。

禁用、启用和删除 HBase 表

要删除表或进行某些更改,HBase 要求您先禁用该表。禁用后,表将脱机,任何客户端都无法对其进行读取或写入操作,从而确保结构性更改的安全性。

禁用一个表,并使用 is_disabled 检查其状态:

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

重新启用该表以恢复读写操作:

hbase> enable 'guru99'

必须先禁用表格才能删除它。删除ping 这会永久删除表格及其所有数据,因此请谨慎使用:

hbase> disable 'guru99'
hbase> drop 'guru99'

要一次性删除多个表,`drop_all` 会删除名称与正则表达式匹配的所有表。`create`、`alter`、`disable`、`enable` 和 `drop` 共同涵盖了表的完整生命周期。 处理数据 在 HBase 表中。

常见问题

最佳实践是尽量减少列族数量,理想情况下为一到三个。HBase 会将同一区域内的所有列族合并并压缩,因此过多的列族会将数据分散到更多文件中,从而降低读写速度。尽可能将相关的列分组到同一个列族中。

不。创建数据时,您只需定义列族。列限定符是动态的,可以在写入数据时添加到任何行。这种灵活的模式设计允许每行包含不同的列,而无需事先修改表。

使用 truncate 'guru99' 命令,该命令会禁用表、删除表,然后使用相同的列族重新创建该表。在删除每一行数据的同时,表结构保持不变。这种方法比逐行删除数据更快、更简洁。

该示例使用了 HBaseAdmin 和 HTable。Descript或者,这两种方法自 HBase 1.0 起均已弃用。现代代码通过 ConnectionFactory 从 Connection 获取 Admin 对象,并使用 Table 构建模式。DescriptorBuilder 和 ColumnFamilyDescriptorBuilder。表格创建逻辑保持不变。

VERSIONS 设置列族中每个单元格保留的带时间戳的版本数量。默认值为 1。使用 get 或 scan 请求旧版本时,会返回所有版本,直到超过保留数量为止;超过后,压缩操作会删除最旧的单元格。

HBase 适用于需要在 Hadoop 和 HDFS 之上进行快速随机读写的大型稀疏数据集。典型应用包括时间序列数据、消息传递和实时分析,其中表的数据量可达数十亿行,并分布在多个节点上。

人工智能编码助手和大型语言模型能够根据纯语言提示自动生成创建、修改和删除命令,解释列族设计,并标记诸如删除之类的风险操作。ping 一张表格。机器学习还可以分析访问模式,从而推荐更优的行键和键族布局,但每个建议都应由工程师进行验证。

是的。 GitHub 副驾驶 可以生成 HBase shell 命令和 Java 用于创建、修改和删除的客户端代码ping 表格来自一条简短的评论。 Rev运行前,请查看其输出,确认表名、列族和当前管理 API 是否正确。

总结一下这篇文章: