返回介绍

HBase 删除数据

发布于 2024-06-23 16:37:45 字数 9407 浏览 0 评论 0 收藏 0

删除表格中的特定单元格

使用delete命令,可以删除表中的特定单元格。delete命令的语法如下:

  1. delete '<table name>', '<row>', '<column name>', '<time stamp>'

这是删除特定单元格的示例。这里我们要删除city。

  1. hbase(main):006:0> delete 'emp', '1', 'personal data:city'
  2. 0 row(s) in 0.0060 seconds

删除表中的所有单元格

使用deleteall命令,您可以删除一行中的所有单元格。下面给出的是deleteall命令的语法。

  1. deleteall '<table name>', '<row>'

这是deleteall命令的示例,其中我们删除了emp表的1的所有单元格。

  1. hbase(main):007:0> deleteall 'emp','1'
  2. 0 row(s) in 0.0240 seconds

使用scan命令验证表。下面给出了删除表后的表快照。

  1. hbase:013:0> scan 'emp'
  2. ROW COLUMN+CELL
  3. 2 column=personal data:city, timestamp=2021-01-04T09:39:25.298, value=chennai
  4. 2 column=personal data:designation, timestamp=2021-01-04T09:39:56.897, value=sr.engineer
  5. 2 column=personal data:name, timestamp=2021-01-04T09:39:07.682, value=ravi
  6. 2 column=personal data:salary, timestamp=2021-01-04T09:40:13.935, value=30000
  7. 3 column=personal data:city, timestamp=2021-01-04T09:40:57.831, value=delhi
  8. 3 column=personal data:designation, timestamp=2021-01-04T09:41:27.262, value=jr.engineer
  9. 3 column=personal data:name, timestamp=2021-01-04T09:40:33.117, value=rajesh
  10. 3 column=personal data:salary, timestamp=2021-01-04T09:41:46.733, value=25000
  11. row1 column=personal data:city, timestamp=2021-01-04T11:24:23.707, value=Delih
  12. row1 column=personal data:designation, timestamp=2021-01-04T10:48:33.531, value=manager
  13. row1 column=personal data:name, timestamp=2021-01-04T10:48:33.531, value=raju
  14. row1 column=personal data:salary, timestamp=2021-01-04T10:48:33.531, value=50000
  15. 3 row(s)

使用Java API删除数据

您可以使用Table类的delete()方法从HBase表中删除数据。请按照下面给出的步骤从表中删除数据。

步骤1:连接数据库

配置类将HBase配置文件添加到其对象。您可以使用HbaseConfiguration类的create()方法创建配置对象,并连接数据库,如下所示。

  1. Configuration config = HBaseConfiguration.create();
  2. Connection connection = ConnectionFactory.createConnection(config);

步骤2:实例化Table类

您有一个名为Table的类,它是HBase中Table的实现。此类用于与单个HBase表进行通信。在实例化此类时,它接受配置对象和表名作为参数。您可以实例化Table类,如下所示。

  1. TableName tb = TableName.valueOf("emp");
  2. // Instantiating Table class
  3. Table table = connection.getTable(tb);

步骤3:实例化Delete类

通过以字节数组格式传递要删除的行的rowid来实例化Delete类。您还可以将时间戳记和行锁传递给此构造函数。

  1. Delete delete = new Delete(toBytes("row1"));

步骤4:选择要删除的数据

您可以使用Delete类的方法删除数据。此类具有各种删除方法。使用这些方法选择要删除的列或列族。看下面的示例,这些示例显示Delete类方法的用法。

  1. // delete cell
  2. delete.addColumn(Bytes.toBytes("personal data"), Bytes.toBytes("name"));
  3. // delete column family
  4. delete.addFamily(Bytes.toBytes("professional data"));

步骤5:删除数据

通过将delete实例传递给HTable类的delete()方法来删除所选数据,如下所示。

  1. table.delete(delete);

步骤6:关闭HTableInstance

删除数据后,关闭Table实例。

  1. table.close();

下面给出的是从HBase表删除数据的完整程序。

  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.Connection;
  6. import org.apache.hadoop.hbase.client.ConnectionFactory;
  7. import org.apache.hadoop.hbase.client.Delete;
  8. import org.apache.hadoop.hbase.client.Table;
  9. import org.apache.hadoop.hbase.util.Bytes;
  10. public class InsertData {
  11. public static void main(String[] args) throws IOException {
  12. // Instantiating Configuration class
  13. Configuration config = HBaseConfiguration.create();
  14. Connection connection = ConnectionFactory.createConnection(config);
  15. TableName tb = TableName.valueOf("emp");
  16. // Instantiating Table class
  17. Table table = connection.getTable(tb);
  18. // Instantiating delete class
  19. // accepts a row name.
  20. Delete delete = new Delete(Bytes.toBytes("row1"));
  21. // delete cell
  22. delete.addColumn(Bytes.toBytes("personal data"), Bytes.toBytes("name"));
  23. // delete column family
  24. delete.addFamily(Bytes.toBytes("professional data"));
  25. // deleting the data
  26. table.delete(delete);
  27. // closing the HTable object
  28. table.close();
  29. System.out.println("data deleted.....");
  30. }
  31. }

编译并执行上述程序,如下所示。

  1. $javac Deletedata.java
  2. $java DeleteData

以下应该是输出:

  1. data deleted

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文