• Hbase记录-HBase扫描/计数/权限


    HBase扫描

    scan 命令用于查看HTable数据。使用 scan 命令可以得到表中的数据。它的语法如下:

    scan ‘<table name>’

    下面的示例演示了如何使用scan命令从表中读取数据。在这里读取的是emp表。

    hbase(main):010:0> scan 'emp'
    
    ROW                           COLUMN+CELL
    
    1 column=personal data:city, timestamp=1417521848375, value=hyderabad
    
    1 column=personal data:name, timestamp=1417521785385, value=ramu
    
    1 column=professional data:designation, timestamp=1417585277,value=manager
    
    1 column=professional data:salary, timestamp=1417521903862, value=50000
    
    1 row(s) in 0.0370 seconds

    使用Java API扫描

    使用Java API扫描整个表的数据的完整程序如下:

    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.util.Bytes;
    
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Result;
    import org.apache.hadoop.hbase.client.ResultScanner;
    import org.apache.hadoop.hbase.client.Scan;
    
    
    public class ScanTable{
    
       public static void main(String args[]) throws IOException{
    
          // Instantiating Configuration class
          Configuration config = HBaseConfiguration.create();
    
          // Instantiating HTable class
          HTable table = new HTable(config, "emp");
    
          // Instantiating the Scan class
          Scan scan = new Scan();
    
          // Scanning the required columns
          scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
          scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));
    
          // Getting the scan result
          ResultScanner scanner = table.getScanner(scan);
    
          // Reading values from scan result
          for (Result result = scanner.next(); result != null; result = Scanner.next())
    
          System.out.println("Found row : " + result);
          //closing the scanner
          scanner.close();
       }
    }

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

    $javac ScanTable.java
    $java ScanTable

    下面列出的是输出:

    Found row :
    keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
    row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}

    HBase计数和截断

    count

    可以使用count命令计算表的行数量。它的语法如下:

    count ‘<table name>’

    删除第一行后,表emp就只有两行。验证它,如下图所示。

    hbase(main):023:0> count 'emp'
    2 row(s) in 0.090 seconds
    => 2

    truncate

    此命令将禁止删除并重新创建一个表。truncate 的语法如下:

    hbase> truncate 'table name'

    下面给出是 truncate 命令的例子。在这里,我们已经截断了emp表。

    hbase(main):011:0> truncate 'emp'
    Truncating 'one' table (it may take a while):
       - Disabling table...
       - Truncating table...
      0 row(s) in 1.5950 seconds
    

    截断表之后,使用scan 命令来验证。会得到表的行数为零。

    hbase(main):017:0> scan emp
    ROW                  COLUMN+CELL
    0 row(s) in 0.3110 seconds

    HBase安全

    我们可以授予和撤销HBase用户的权限。也有出于安全目的,三个命令:grant, revoke 和 user_permission.。

    grant

    grant命令授予特定的权限,如读,写,执行和管理表给定一个特定的用户。 grant命令的语法如下:

    hbase> grant <user> <permissions> [<table> [<column family> [<column; qualifier>]]

    我们可以从RWXCA组,其中给予零个或多个特权给用户

    • R - 代表读取权限
    • W - 代表写权限
    • X - 代表执行权限
    • C - 代表创建权限
    • A - 代表管理权限

    下面给出是为用户“Tutorialspoint'授予所有权限的例子。

    hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

    revoke

    revoke命令用于撤销用户访问表的权限。它的语法如下:

    hbase> revoke <user>

    下面的代码撤消名为“Tutorialspoint”用户的所有权限。

    hbase(main):006:0> revoke 'Tutorialspoint'

    user_permission

    此命令用于列出特定表的所有权限。 user_permission的语法如下:

    hbase>user_permission tablename

    下面的代码列出了“emp”表的所有用户权限。

    hbase(main):013:0> user_permission 'emp'
     
  • 相关阅读:
    Python Scrapy环境配置教程+使用Scrapy爬取李毅吧内容
    Python 基础语法+简单地爬取百度贴吧内容
    Hadoop Mapreduce 工作机制
    Myeclipse 配置Git详解
    Java 多线程详解
    Hadoop Mapreduce 案例 wordcount+统计手机流量使用情况
    Hadoop HDFS NameNode工作机制
    Hadoop HDFS元数据目录分析
    Hadoop HDFS DataNode 目录结构
    Hadoop HDFS 文件块大小
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7717419.html
Copyright © 2020-2023  润新知