gpt4 book ai didi

nosql - HBase - 行键基础知识

转载 作者:行者123 更新时间:2023-12-04 15:12:54 24 4
gpt4 key购买 nike

注意:几个小时前,我开始使用 HBase 并且我来自 RDBMS 背景:P

我有一个类似 RDBMS 的表 CUSTOMERS 具有以下列:

  • CUSTOMER_ID STRING
  • CUSTOMER_NAME STRING
  • CUSTOMER_EMAIL STRING
  • CUSTOMER_ADDRESS STRING
  • CUSTOMER_MOBILE STRING

  • 我想到了以下 HBase 等效项:

    table : CUSTOMERS rowkey : CUSTOMER_ID

    column family : CUSTOMER_INFO

    columns : NAME EMAIL ADDRESS MOBILE



    从我读过的内容来看,RDBMS 表中的主键大致类似于 HBase 表的行键。因此,我想保留 CUSTOMER_ID 作为行键。

    我的问题既愚蠢又直接:
  • 无论我是使用 shell 命令还是 HBaseAdmin java
    类,我如何定义行键?我没有找到任何事情要做
    无论是在 shell 中还是在 HBaseAdmin 类中(比如
    HBaseAdmin.createSuperKey(...))
  • 给定一个 HBase 表,如何确定 rowkey 详细信息,即哪些值用作 rowkey?
  • 我知道行键设计是一件至关重要的事情。假设客户 id 收到 CUST_12345、CUST_34434 等值,HBase 将如何使用 rowkey 来决定特定行驻留在哪个区域(假设该区域概念类似于 DB 水平分区)?

  • ***编辑添加示例代码片段

    我只是想在 shell 中使用“put”为客户表创建一行。我这样做了:
    hbase(main):011:0> put  'CUSTOMERS', 'CUSTID12345', 'CUSTOMER_INFO:NAME','Omkar Joshi'
    0 row(s) in 0.1030 seconds

    hbase(main):012:0> scan 'CUSTOMERS'
    ROW COLUMN+CELL
    CUSTID12345 column=CUSTOMER_INFO:NAME, timestamp=1365600052104, value=Omkar Joshi
    1 row(s) in 0.0500 seconds

    hbase(main):013:0> put 'CUSTOMERS', 'CUSTID614', 'CUSTOMER_INFO:NAME','Prachi Shah', 'CUSTOMER_INFO:EMAIL','Prachi.Shah@lntinfotech.com'

    ERROR: wrong number of arguments (6 for 5)

    Here is some help for this command:
    Put a cell 'value' at specified table/row/column and optionally
    timestamp coordinates. To put a cell value into table 't1' at
    row 'r1' under column 'c1' marked with the time 'ts1', do:

    hbase> put 't1', 'r1', 'c1', 'value', ts1


    hbase(main):014:0> put 'CUSTOMERS', 'CUSTID12345', 'CUSTOMER_INFO:EMAIL','Omkar.Joshi@lntinfotech.com'
    0 row(s) in 0.0160 seconds

    hbase(main):015:0>
    hbase(main):016:0* scan 'CUSTOMERS'
    ROW COLUMN+CELL
    CUSTID12345 column=CUSTOMER_INFO:EMAIL, timestamp=1365600369284, value=Omkar.Joshi@lntinfotech.com
    CUSTID12345 column=CUSTOMER_INFO:NAME, timestamp=1365600052104, value=Omkar Joshi
    1 row(s) in 0.0230 seconds

    由于投入需要最大。 5 个参数,我无法弄清楚如何在一个 put 命令中插入整行。这导致了不需要的同一行的增量版本,我不确定是否将 CUSTOMER_ID 用作行键!
    感谢致敬 !

    最佳答案

  • 你不知道,键(和任何其他列)是一个字节数组,你可以在那里放任何你想要的东西 - 甚至封装子实体
  • 不确定我是否理解-每个值都存储为键+列族+列限定符+日期时间+值-所以键就在那里。
  • HBase 计算出一条记录将在哪个区域进行。当区域变得太大时,它会重新分区。当垃圾太多时,HBase 也会不时执行压缩以重新排列文件。您可以在对自己进行预分区时控制这一点,这是您将来绝对应该考虑的事情。但是,由于您似乎刚刚开始使用 HBase,您可以从 HBase 开始处理。一旦你更好地理解了你的使用模式和数据,你可能会想要再复习一遍。

  • 您可以阅读/听到一些关于 HBase 架构设计的信息 herehere

    关于nosql - HBase - 行键基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917558/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com