返回介绍

HBase 更新数据

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

使用HBase Shell更新数据

您可以使用put命令更新现有的单元格值。为此,只需遵循相同的语法并提及您的新值,如下所示。

  1. put 'table name','row','Column family:column name','new value'

新给定的值将替换现有值,从而更新行。

假设在HBase中有一个名为emp的表,其中包含以下数据。

  1. hbase(main):003:0> scan 'emp'
  2. ROW COLUMN + CELL
  3. row1 column = personal:name, timestamp = 1418051555, value = raju
  4. row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
  5. row1 column = professional:designation, timestamp = 14180555,value = manager
  6. row1 column = professional:salary, timestamp = 1418035791555,value = 50000
  7. 1 row(s) in 0.0100 seconds

以下命令会将名为raju的员工的city值更新为Delhi。

  1. hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
  2. 0 row(s) in 0.0400 seconds

更新后的表格如下所示,您可以在其中观察raju市已更改为Delhi。

  1. hbase(main):003:0> scan 'emp'
  2. ROW COLUMN + CELL
  3. row1 column = personal:name, timestamp = 1418035791555, value = raju
  4. row1 column = personal:city, timestamp = 1418274645907, value = Delhi
  5. row1 column = professional:designation, timestamp = 141857555,value = manager
  6. row1 column = professional:salary, timestamp = 1418039555, value = 50000
  7. 1 row(s) in 0.0100 seconds

使用Java API更新数据

您可以使用Put类的add()方法将数据更新Hbase 。您可以使用HTable类的put()方法保存它。这些类属于org.apache.hadoop.hbase.client软件包。下面给出了在HBase表中更新数据的步骤。

步骤1:连接

该配置类增加了HBase的配置文件,它的对象。您可以使用HbaseConfiguration类的create()方法创建配置对象,如下所示。

  1. // Instantiating Configuration class
  2. Configuration config = HBaseConfiguration.create();
  3. Connection connection = ConnectionFactory.createConnection(config);

步骤2:实例化Table类

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

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

步骤3:实例化Put类

要将数据更新到HBase表中,请使用add()方法及其变体。此方法属于Put,因此实例化put类。此类要求您要以字符串格式将数据更新到的行名。您可以如下所示实例化Put类。

  1. Put p = new Put(Bytes.toBytes("row1"));

步骤4:更新数据

Put类的addaddColumn()方法用于更新数据。它需要3个字节的数组,分别代表列族,列限定符(列名)和要更新的值。如下所示,使用addColumn()方法将数据更新HBase表。

  1. p.addColumn(Bytes.toBytes("personal data"), Bytes.toBytes("city"), Bytes.toBytes("Delih"));

步骤5:将数据保存在表中

更新所需的行后,通过将put实例添加到HTable类的put()方法中来保存更改,如下所示。

  1. Table.put(p);

步骤6:关闭HTable实例

在HBase表中更新数据后,使用close()方法关闭HTable实例,如下所示。

  1. Table.close();

下面给出了在HBase Table中更新数据的完整程序。

  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.Put;
  8. import org.apache.hadoop.hbase.client.Table;
  9. import org.apache.hadoop.hbase.util.Bytes;
  10. public class UpdateData {
  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 HTable class
  17. Table table = connection.getTable(tb);
  18. // Instantiating Put class
  19. // accepts a row name.
  20. Put p = new Put(Bytes.toBytes("row1"));
  21. // update values using add() method
  22. p.addColumn(Bytes.toBytes("personal data"), Bytes.toBytes("city"), Bytes.toBytes("Delih"));
  23. // Saving the put Instance to the HTable.
  24. table.put(p);
  25. System.out.println("data updated");
  26. // closing HTable
  27. table.close();
  28. }
  29. }

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

  1. $javac UpdateData.java
  2. $java UpdateData

以下应该是输出:

  1. data updated

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

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

发布评论

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