HBase过滤器

2023-05-16

目录

一、介绍

1.hbase运算符

2.Hbase 过滤器的比较器

二、代码

1.hbase建表

2.创建数据

 3.导入依赖

4.列值过滤器

 5.单列值过滤器

6.单列值排除过滤器

7.rowkey过滤器

8.rowkey前缀过滤器:PrefixFilter 

9. 列簇过滤器

10.列过滤器

11.综合过滤器


一、介绍

  • 列值过滤器
  • SingleColumnValueFilter 单列值过滤器
  • SingleColumnValueExcludeFilter 单列值排除过滤器
  • rowkey过滤器
  • rowkey前缀过滤器:PrefixFilter
  • 列簇过滤器
  • 列过滤器
  • PageFilter 分页过滤器
  • 分页过滤器 改进版
  • 多过滤器综合使用 之前Hbase查询表中的数据都是通过 get 和 scan ,但是get只能查询一行数 据,scan虽然能查询范围内的数据,但是这个范围的划分仅仅是依靠行键的范围,不能做到像 mysql或者hive那样针对列值进行筛选查询等操作。

过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤, 基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有 过滤器条件的 RPC 查询请求会把过滤器分发到各个 RegionServer(这是一个服务端过滤器),这样也可以 降低网络传输的压力。 使用过滤器至少需要两类参数: 一类是抽象的比较运算符,另一类是比较器

1.hbase运算符

// CompareFilter.CompareOp.LESS_OR_EQUAL
LESS				<
LESS_OR_EQUAL		<=
EQUAL				=
NOT_EQUAL			<>
GREATER_OR_EQUAL	>=
GREATER				>
NO_OP               排除所有

2.Hbase 过滤器的比较器

BinaryComparator  按字节索引顺序比较指定字节数组,采用Bytes.compareTo(byte[])
BinaryPrefixComparator 跟前面相同,只是比较左端的数据是否相同
NullComparator 判断给定的是否为空
BitComparator 按位比较 a BitwiseOp class 做异或,与,并操作
RegexStringComparator 提供一个正则的比较器,仅支持 EQUAL 和非EQUAL
SubstringComparator 判断提供的子串是否出现在table的value中。

 比较过滤器:可应用于rowkey、列簇、列、列值过滤器

列值过滤器:ValueFilter

列过滤器:QualifierFilter

列簇过滤器:FamilyFilter

rowKey过滤器:RowFilter 专用过滤器:只能适用于特定的过滤器

单列值过滤器:SingleColumnValueFilter

列值排除过滤器:SingleColumnValueExcludeFilter

rowkey前缀过滤器:PrefixFilter

分页过滤器PageFilter

二、代码

1.hbase建表


hbase(main):002:0> create 'emp2','info'
0 row(s) in 1.7460 seconds
 
=> Hbase::Table - emp2

2.创建数据

put 'emp2','1001','info:name','zhangsan'
put 'emp2','1001','info:job','preader'
put 'emp2','1001','info:salary','35000'
put 'emp2','1001','info:deptName','TP'

put 'emp2','1002','info:name','lisi'
put 'emp2','1002','info:job','preader'
put 'emp2','1002','info:salary','35000'
put 'emp2','1002','info:deptName','AC'


put 'emps','1201','info:name','gopal'
put 'emps','1201','info:job','manager'
put 'emps','1201','info:salary','50000'
put 'emps','1201','info:deptName','TP'

put 'emp2','1202','info:name','manisha'
put 'emp2','1202','info:job','preader'
put 'emp2','1202','info:salary','50000'
put 'emp2','1202','info:deptName','TP'

put 'emp2','1203','info:name','kalil'
put 'emp2','1203','info:job','phpdev'
put 'emp2','1203','info:salary','30000'
put 'emp2','1203','info:deptName','AC'

put 'emp2','1204','info:name','prasanth'
put 'emp2','1204','info:job','phpdev'
put 'emp2','1204','info:salary','30000'
put 'emp2','1204','info:deptName','AC'

put 'emp2','1205','info:name','kranthi'
put 'emp2','1205','info:job','admin'
put 'emp2','1205','info:salary','20000'
put 'emp2','1205','info:deptName','TP'

put 'emp2','1206','info:name','satishp'
put 'emp2','1206','info:job','grpdes'
put 'emp2','1206','info:salary','20000'
put 'emp2','1206','info:deptName','GR'

 3.导入依赖

<dependencies>
<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.4.13</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>1.4.13</version>
        </dependency>
</dependencies>

4.列值过滤器

列值过滤器仅仅针对单元格中的值进行过滤,满足 比较运算符加上比较器 构成的过滤条件,则留下,否则为 null 虽然这里给出的过滤条件是 salary>30000 ,但是发现在代码里面根本没有指定salary这一列,因此实际上,列值过 滤器是与所有列的所有单元格进行比较。如果满足条件则保留数据,如果不满足则过滤掉该数据,查询时不满足 过滤条件的单元格都为null 这里的 id 和 name 等列的值也能显示出现,是因为这里的比较器是按照字节数组进行比较,id和name里面 的值都满足过滤条件,所以没有 变成null

package com.lenovo.Filter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

public class ValueFilterDemo {
    //成员变量自动初始化
    Connection connection;
    Admin admin;
    TableName tableName;
    Table table;
    /**
     * @Date 2022.04.26
     * @Description 获取连接以及表对象
     */
    @Before
    public void createConnection(){
        //局部变量手动初始化
        //获取配置对象
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", "IP地址");
        //获取连接
        try {
            connection = ConnectionFactory.createConnection(configuration);
            //获取管理员对象
            admin = connection.getAdmin();
            //获取表名
            tableName = tableName.valueOf("emp2");
            //获取表的对象
            table = connection.getTable(tableName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * @Date 2022.04.26
     * @Description 列值过滤器
     * salary>30000
     */
    @Test
    public void test(){
        //创建比较运算符以及比较运算器
        BinaryComparator binaryComparator = new BinaryComparator("30000".getBytes());
        //创建过滤器
        ValueFilter valueFilter = new ValueFilter(CompareFilter.CompareOp.GREATER, binaryComparator);
        //调用print方法
        print(valueFilter);
    }
    

    //打印过滤后数据
    private void print(Filter filter){
        //创建Scan对象
        Scan scan = new Scan();
        //将过滤器放到scan对象
        scan.setFilter(filter);
        //调用scan

        try {
            ResultScanner scanner = table.getScanner(scan);
            //解析
            for (Result result : scanner) {
                //scan扫描返回的时多行数据,遍历循环每一行的数据
                // 利用getrow方法取出rowkey
                // 利用getValue方法取出这一行的value值,根据列簇和列确定一个单元格的值
                //拿到rowKey
                String rowKey = Bytes.toString(result.getRow());//byte数组转字符串
                //拿到其他列
                String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
                String job = Bytes.toString(result.getValue("info".getBytes(), "job".getBytes()));
                String salary = Bytes.toString(result.getValue("info".getBytes(), "salary".getBytes()));
                String deptName = Bytes.toString(result.getValue("info".getBytes(), "deptName".getBytes()));
                System.out.println("id:"+rowKey+",name:"+name+",job:"+job+",salary:"+salary+",deptName:"+deptName);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    @After
    public void close(){
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

 5.单列值过滤器

package com.lenovo.Filter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

public class ValueFilterDemo {
    //成员变量自动初始化
    Connection connection;
    Admin admin;
    TableName tableName;
    Table table;
    /**
     * @Date 2022.04.26
     * @Description 获取连接以及表对象
     */
    @Before
    public void createConnection(){
        //局部变量手动初始化
        //获取配置对象
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", "IP地址");
        //获取连接
        try {
            connection = ConnectionFactory.createConnection(configuration);
            //获取管理员对象
            admin = connection.getAdmin();
            //获取表名
            tableName = tableName.valueOf("emp2");
            //获取表的对象
            table = connection.getTable(tableName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
/**
     * @Date 2022.04.26
     * @Description 单列值过滤器
     * 可以指定一个列进行过滤
     * 该过滤器会将符合过滤条件的列对应的cell所在的整行数据进行返回
     * 如果某条数据的列不符合条件,则会将整条数据进行过滤
     * 如果数据中不存在指定的列,则默认会直接返回,并且该列全为null
     * salary>30000
     */
    @Test
    public void SingleColumnValueFilter() throws IOException {
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                "info".getBytes(),
                "salary".getBytes(),
                CompareFilter.CompareOp.GREATER,
                "30000".getBytes()
        );
        print(singleColumnValueFilter);

    }
//打印过滤后数据
    private void print(Filter filter){
        //创建Scan对象
        Scan scan = new Scan();
        //将过滤器放到scan对象
        scan.setFilter(filter);
        //调用scan

        try {
            ResultScanner scanner = table.getScanner(scan);
            //解析
            for (Result result : scanner) {
                //scan扫描返回的时多行数据,遍历循环每一行的数据
                // 利用getrow方法取出rowkey
                // 利用getValue方法取出这一行的value值,根据列簇和列确定一个单元格的值
                //拿到rowKey
                String rowKey = Bytes.toString(result.getRow());//byte数组转字符串
                //拿到其他列
                String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
                String job = Bytes.toString(result.getValue("info".getBytes(), "job".getBytes()));
                String salary = Bytes.toString(result.getValue("info".getBytes(), "salary".getBytes()));
                String deptName = Bytes.toString(result.getValue("info".getBytes(), "deptName".getBytes()));
                System.out.println("id:"+rowKey+",name:"+name+",job:"+job+",salary:"+salary+",deptName:"+deptName);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    @After
    public void close(){
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

6.单列值排除过滤器

package com.lenovo.Filter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

public class ValueFilterDemo {
    //成员变量自动初始化
    Connection connection;
    Admin admin;
    TableName tableName;
    Table table;
    /**
     * @Date 2022.04.26
     * @Description 获取连接以及表对象
     */
    @Before
    public void createConnection(){
        //局部变量手动初始化
        //获取配置对象
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", "IP地址");
        //获取连接
        try {
            connection = ConnectionFactory.createConnection(configuration);
            //获取管理员对象
            admin = connection.getAdmin();
            //获取表名
            tableName = tableName.valueOf("emp2");
            //获取表的对象
            table = connection.getTable(tableName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
/**
     * @Date 2022.04.26
     * @Description 单列值排除过滤器
     * 列值过滤器返回的是全部的行,而单列值过滤器返回的是满足过滤条件的行
     * salary=30000
     */
    @Test
    public void SingleColumnValueExcludeFilter(){
        BinaryPrefixComparator binaryPrefixComparator = new BinaryPrefixComparator("30000".getBytes());
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
                "info".getBytes(),
                "salary".getBytes(),
                CompareFilter.CompareOp.EQUAL,
                binaryPrefixComparator
        );
        print(singleColumnValueFilter);
    }
//打印过滤后数据
    private void print(Filter filter){
        //创建Scan对象
        Scan scan = new Scan();
        //将过滤器放到scan对象
        scan.setFilter(filter);
        //调用scan

        try {
            ResultScanner scanner = table.getScanner(scan);
            //解析
            for (Result result : scanner) {
                //scan扫描返回的时多行数据,遍历循环每一行的数据
                // 利用getrow方法取出rowkey
                // 利用getValue方法取出这一行的value值,根据列簇和列确定一个单元格的值
                //拿到rowKey
                String rowKey = Bytes.toString(result.getRow());//byte数组转字符串
                //拿到其他列
                String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
                String job = Bytes.toString(result.getValue("info".getBytes(), "job".getBytes()));
                String salary = Bytes.toString(result.getValue("info".getBytes(), "salary".getBytes()));
                String deptName = Bytes.toString(result.getValue("info".getBytes(), "deptName".getBytes()));
                System.out.println("id:"+rowKey+",name:"+name+",job:"+job+",salary:"+salary+",deptName:"+deptName);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    @After
    public void close(){
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

 

7.rowkey过滤器

package com.lenovo.Filter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

public class ValueFilterDemo {
    //成员变量自动初始化
    Connection connection;
    Admin admin;
    TableName tableName;
    Table table;
    /**
     * @Date 2022.04.26
     * @Description 获取连接以及表对象
     */
    @Before
    public void createConnection(){
        //局部变量手动初始化
        //获取配置对象
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", "IP地址");
        //获取连接
        try {
            connection = ConnectionFactory.createConnection(configuration);
            //获取管理员对象
            admin = connection.getAdmin();
            //获取表名
            tableName = tableName.valueOf("emp2");
            //获取表的对象
            table = connection.getTable(tableName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
/**
     * @Date 2022.04.26
     * @Description rowkey过滤器
     * rowkey过滤器加上前缀比较器
     * 过滤出rowkey(id)以100开头的
     */
    @Test
    public void rowKeyFilter(){
        BinaryPrefixComparator binaryPrefixComparator = new BinaryPrefixComparator("100".getBytes());
        RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL, binaryPrefixComparator);
        print(rowFilter);
    }

//打印过滤后数据
    private void print(Filter filter){
        //创建Scan对象
        Scan scan = new Scan();
        //将过滤器放到scan对象
        scan.setFilter(filter);
        //调用scan

        try {
            ResultScanner scanner = table.getScanner(scan);
            //解析
            for (Result result : scanner) {
                //scan扫描返回的时多行数据,遍历循环每一行的数据
                // 利用getrow方法取出rowkey
                // 利用getValue方法取出这一行的value值,根据列簇和列确定一个单元格的值
                //拿到rowKey
                String rowKey = Bytes.toString(result.getRow());//byte数组转字符串
                //拿到其他列
                String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
                String job = Bytes.toString(result.getValue("info".getBytes(), "job".getBytes()));
                String salary = Bytes.toString(result.getValue("info".getBytes(), "salary".getBytes()));
                String deptName = Bytes.toString(result.getValue("info".getBytes(), "deptName".getBytes()));
                System.out.println("id:"+rowKey+",name:"+name+",job:"+job+",salary:"+salary+",deptName:"+deptName);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    @After
    public void close(){
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

8.rowkey前缀过滤器:PrefixFilter 

package com.lenovo.Filter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

public class ValueFilterDemo {
    //成员变量自动初始化
    Connection connection;
    Admin admin;
    TableName tableName;
    Table table;
    /**
     * @Date 2022.04.26
     * @Description 获取连接以及表对象
     */
    @Before
    public void createConnection(){
        //局部变量手动初始化
        //获取配置对象
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", "IP地址");
        //获取连接
        try {
            connection = ConnectionFactory.createConnection(configuration);
            //获取管理员对象
            admin = connection.getAdmin();
            //获取表名
            tableName = tableName.valueOf("emp2");
            //获取表的对象
            table = connection.getTable(tableName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
/**
     * @Date 2022.04.26
     * @Description rowkey前缀过滤器
     * rowkey过滤器加上前缀比较器
     * 过滤出rowkey(id)以100开头的
     * rowkey过滤器加上前缀比较器后,与rowkey前缀过滤器的效果相同
     */
    @Test
    public void PrefixFilter(){
        PrefixFilter prefixFilter = new PrefixFilter("100".getBytes());
        print(prefixFilter);
    }

//打印过滤后数据
    private void print(Filter filter){
        //创建Scan对象
        Scan scan = new Scan();
        //将过滤器放到scan对象
        scan.setFilter(filter);
        //调用scan

        try {
            ResultScanner scanner = table.getScanner(scan);
            //解析
            for (Result result : scanner) {
                //scan扫描返回的时多行数据,遍历循环每一行的数据
                // 利用getrow方法取出rowkey
                // 利用getValue方法取出这一行的value值,根据列簇和列确定一个单元格的值
                //拿到rowKey
                String rowKey = Bytes.toString(result.getRow());//byte数组转字符串
                //拿到其他列
                String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
                String job = Bytes.toString(result.getValue("info".getBytes(), "job".getBytes()));
                String salary = Bytes.toString(result.getValue("info".getBytes(), "salary".getBytes()));
                String deptName = Bytes.toString(result.getValue("info".getBytes(), "deptName".getBytes()));
                System.out.println("id:"+rowKey+",name:"+name+",job:"+job+",salary:"+salary+",deptName:"+deptName);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
    @After
    public void close(){
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

9. 列簇过滤器

/**
     * @Date 2022.04.26
     * @Description 列簇过滤器
     * 匹配列簇
     */
    @Test
    public void familyFilterTest(){
        RegexStringComparator regexStringComparator = new RegexStringComparator("i[a-zA-Z]");
        FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, regexStringComparator);
        print(familyFilter);
    }

运行结果:

 

10.列过滤器

/**
     * @Date 2022.04.26
     * @Description 列过滤器
     * 匹配子字符串
     * 其他列为null
     */
    @Test
    public void substringFilterTest(){
        SubstringComparator substringComparator = new SubstringComparator("me");
        QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, substringComparator);
        print(qualifierFilter);
    }

 运行结果:

 

11.综合过滤器

 @Test
    public void manyColumnFilter(){
        //查询列
        SubstringComparator substringComparator = new SubstringComparator("a");
        QualifierFilter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, substringComparator);
        //查询salary>30000
        BinaryComparator binaryComparator = new BinaryComparator("30000".getBytes());
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("info".getBytes(), "salary".getBytes(), CompareFilter.CompareOp.GREATER, binaryComparator);
        //利用FilterList,将多个过滤器放在一起,一起过滤
        FilterList filterList = new FilterList();
        filterList.addFilter(qualifierFilter);
        filterList.addFilter(singleColumnValueFilter);
        print(filterList);

    }

 运行结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HBase过滤器 的相关文章

  • Hbase快速统计行数

    现在我实现了行计数ResultScanner像这样 for Result rs scanner next rs null rs scanner next number 如果数据达到百万次计算量很大 我想实时计算我不想使用Mapreduce
  • 如何增加 HBase 表中的区域数量

    我在 HBase 中创建了一个表 预分割了 8 个区域 使用 HexStringSplit 作为分割算法 现在我想增加区域的数量 而不破坏现有的表及其中的数据 我创建预分割的命令是 create t1 f1 NUMREGIONS gt 15
  • HBASE SPARK 带过滤器的查询,无需加载所有 hbase

    我必须查询 HBASE 然后使用 Spark 和 scala 处理数据 我的问题是 通过我的解决方案 我获取 HBASE 表的所有数据 然后进行过滤 这不是一种有效的方法 因为它占用了太多内存 所以我想直接做过滤器 我该怎么做 def Hb
  • 如何通过部分行键过滤HBase的Scan?

    我有带有行键的 HBase 表 其中包含文本 ID 和时间戳 如下所示 string id1 1470913344067 string id1 1470913345067 string id2 1470913344067 string id
  • 将 Jar 文件添加到 WEB-INF/lib [重复]

    这个问题在这里已经有答案了 我是 Eclipse Java 和 Linux 的新手 我搜索这个问题 但没有找到答案 我想编写一个操作 HBase 表的程序 所以我有一些与 HBase 相关的 Jar 文件 在普通的 Java 应用程序中 我
  • HBase:复制是如何工作的?

    我目前正在将 HBase 作为数据存储进行评估 但有一个问题没有得到解答 HBase 在许多节点上存储同一对象的许多副本 也称为复制 由于HBase具有所谓的强一致性 相比之下最终一致 它保证每个副本在读取时返回相同的值 据我了解 HBas
  • 在 Java 中连接来自 HBase 的两个结果集?

    是否可以连接从 java 中的 hbase 检索的两个或多个结果集 不 不可能加入 JDBC 结果集 但是 您可以获取它们的结果并手动组合它们 如果它们兼容 如果它们属于同一实体 EDIT 如果您只需要组合两个相同类型的列表 您可以这样做
  • 将 Spark 数据帧插入 hbase

    我有一个数据框 我想将其插入到 hbase 中 我遵循这个文档 https hbase apache org book html sparksql dataframes 这就是我的数据框的样子 id name address 23 marr
  • Spark 序列化错误:当我将 Spark Stream 数据插入 HBase 时

    我对 Spark 如何在数据格式方面与 HBase 交互感到困惑 例如 当我在下面的代码片段中省略 ERROR 行时 它运行良好 但是添加该行后 我发现了与序列化问题相关的 任务不可序列化 的错误 如何更改代码 发生错误的原因是什么 我的代
  • 使用 Spark 和 Phoenix 将 CSV 文件保存到 hbase 表

    有人可以向我指出使用 Spark 将 csv 文件保存到 Hbase 表的工作示例吗2 2我尝试过但失败的选项 注意 它们都适用于我的 Spark 1 6 凤凰火花 hbase spark it nerdammer bigdata spar
  • Spark 在 Hbase 的 InputSplit 期间给出空指针异常

    我正在使用 Spark 1 2 1 Hbase 0 98 10 和 Hadoop 2 6 0 从 hbase 检索数据时出现空点异常 找到下面的堆栈跟踪 sparkDriver akka actor default dispatcher 2
  • 我的 cdh5.2 集群在运行 hbase MR 作业时出现 FileNotFoundException

    我的 cdh5 2 集群运行 hbase MR 作业时出现问题 例如 我将 hbase 类路径添加到 hadoop 类路径中 vi etc hadoop conf hadoop env sh 添加行 export HADOOP CLASSP
  • HBase单调递增键的行键设计

    我有一个 HBase 表 我在其中编写行键 例如
  • HBase如何实现对HDFS的随机访问?

    鉴于HBase是一个数据库 其文件存储在HDFS中 那么它如何实现对HDFS中单个数据的随机访问呢 这是通过什么方法实现的呢 From Apache HBase 参考指南 http hbase apache org book archite
  • HBase 作为 Web 应用程序后端

    任何人都可以建议将 HBase 作为基于 Web 的应用程序的主要数据源是否是一个好主意 我主要关心的是 HBase 对查询的响应时间 是否有可能实现亚秒级响应 编辑 有关应用程序本身的更多详细信息 数据量 约500GB文本数据 预计很快将
  • hbase api - 通过行ID列表获取数据行信息

    是否可以通过hbase java API通过行id列表获取hbase数据记录 例如 我有一个已知的 hbase 行 ID 列表 mykey1 myhash1 mykey1 myhash2 mykey1 myhash3 mykey2 myha
  • 从 Storm Bolt 将行插入 HBase

    我希望能够从分布式 非本地 Storm 拓扑将新条目写入 HBase 有一些 GitHub 项目提供以下任一功能 HBase 映射器 https github com ptgoetz storm hbase or 预制风暴螺栓 https
  • 获取行 HBase 的特定列族中的列

    我正在编写一个应用程序 通过 JSP 显示 HBase 中特定表中的数据 我想获取一行的特定列族中的所有列 有什么办法可以做到这一点吗 public String getColumnsInColumnFamily Result r Stri
  • 在 Amazon EMR 上使用 java 中的 hbase 时遇到问题

    因此 我尝试使用作为 MapReduce 步骤启动的自定义 jar 来查询 Amazon ec2 上的 hbase 集群 我的 jar 在地图函数内 我这样调用 Hbase public void map Text key BytesWri
  • Flume将数据从MySQL迁移到Hadoop

    请分享您的想法 需求是将MySQL db中的数据迁移到Hadoop HBase进行分析 数据应该实时或接近实时地迁移 Flume可以支持这个吗 有什么更好的方法 据我了解 Flume 并不是为此而设计的 Flume 基本上用于读取日志 如数

随机推荐

  • winform基础 C#编程

    1 winform应用程序是一种智能客户端技术 xff0c 帮助我们获得信息或者传输信息 2 当后台需要获取前台控件属性 xff0c 需要使用Name属性 visible 指示一个空间是否可见 enabled 指示一个空间是否可用 3 事件
  • 联合索引为啥需要满足最左前缀原则?

    在回答这个问题之前 首先需要先了解清楚何为联合索引 联合索引就是MySQL设计大叔为了节省内存而创建的将多个列的值作为非叶子节点存储的B 43 树结构 比如按照key part1 key part2 key part3列创建了idx key
  • 堆栈和变量的分配区域

    转载自 http mengren425 blog 163 com blog static 56903931200791003721118 一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区
  • 2023海南大学835软件工程原理方法与应用考研总结

    不知不觉23考研已经结束一个星期了 xff0c 考试的过程还历历在目 政治复习虽然看完了徐的视频 xff0c 刷完了1000题 xff0c 写了肖8肖4 xff0c 背了肖4大题 xff0c 但选择题写的时候还是十分纠结 xff0c 用了一
  • vue 封装 axios 请求

    需求 xff1a 向后端请求拿数据 好处 xff1a 把所有的请求方法放在一个文件夹里面 xff0c 方便优化 先把 axios 安装起 npm install axios save 接下来按照步骤走吧 go go go 1 在src路径下
  • Python:从清华源安装第三方库

    python 在使用pip安装的时候 xff0c 一些小一点的还好 xff0c 安装一些大的包的时候 xff0c 会非常的慢甚至出现timeout的报错 xff0c 这时我们就可以使用清华大学的镜像来安装 xff0c 打开终端 xff1a
  • 用OpenStack搭建简单的云平台并启动云主机

    OpenStack OpenStack简介OpenStack重要集成组件OpenStack平台部署部署环境建立虚拟机 配置时间同步安装OpenStack安装 RabbitMQ 消息队列服务Memcached缓存令牌的安装安装和配置OpenS
  • 关于VMware USB arbitration Serve 服务无法启动的问题

    文章目录 问题方法一方法二 问题 虚拟机插入U盘或者PA等其他USB设备时无法识别 xff0c 经过一番查询发现是本机的VMware USB arbitration Serve 没有启动 xff0c 然后 打开以后尝试启动VMware US
  • keil5安装记录(基于stm32芯片配置)

    参考资料地址正点原子 下载上述地址中的文件 xff0c 根据自己芯片的型号下载 xff0c 如仅安装keil仅下载网盘中的 软件资料 即可 xff0c 同时也可在官网下载 xff0c 但是不推荐下载最新版本 xff0c 因为很多报错没有可参
  • 黎曼几何与黎曼流形

    目录 0 黎曼几何 1 欧几里得几何与黎曼几何的区别 2 黎曼流形 3 黎曼距离 4 切空间 5 黎曼均值 6 SPD矩阵如何形成黎曼流型 7 切线空间映射 8 同余变换和同余不变 9 黎曼对齐 科普性笔记 xff0c 做了解 xff0c
  • Faster R-CNN

    1 论文简介 论文名 xff1a Faster R CNN Towards Real Time Object Detection with Region Proposal Networks 论文地址 xff1a Faster R CNN 论
  • 手把手教你安装VSCode(附带图解步骤)

    一 前端工具vscode 1 1 概述 前端开发是创建Web页面或app等前端界面呈现给用户的过程 xff0c 通过HTML xff0c CSS及JavaScript以及衍生出来的各种技术 框架 解决方案 xff0c 来实现互联网产品的用户
  • 前端小知识:1.A标签的用法

    前端小知识 1 A标签的用法 Hello xff0c 大家好 xff0c 我是仲桉君 因为一些不可抗因素停更了很久 xff0c 但是我还是回来了从今天开始正式开始更新 这个系列是有关一些前端的小知识的小博文 预计更新20篇以上 争取做到每日
  • 从uboot中学习C语言基本功(uboot/lib_generic/vsprintf.c/simple_strtoul)

    此函数有以下几点值得注意 xff1a 1 第一个参数中的const 一般在函数的形参中 xff0c 如果我们只是希望调用者使用该参数 xff0c 而不会去改变该 参数内容 xff08 一般是指针指向的内容 xff09 xff0c 则可以声明
  • C++语法基础

    C 43 43 环境安装和基础知识 1 xff1a C 43 43 环境安装与配置 我使用的编译器是Clion xff0c 解释器配置的是Dev C 43 43 自带的解释器 xff0c Clion安装见下文 Clion的安装和配置 xff
  • Samba服务

    目录 配置yum源 安装samba服务 配置samba服务 Windows环境使用Samba服务 Linux环境使用Samba服务 xff08 1 xff09 方法一使用smbclient命令 xff08 2 xff09 方法二使用挂载的方
  • 已解决—The connection to the server localhost:8080 was refused - did you specify the right host or port

    运行 kubectl get namespace时报错 xff1a root 64 ip 10 0 0 8 kubectl get namespace E0320 07 39 20 866425 32422 memcache go 265
  • 修改ideal中java项目jdk版本,记得收藏

    1 Ctrl 43 Shfit 43 Alt 43 S 进入Settings 窗口 xff0c 修改红框标记的两处jdk版本 2 Ctrl 43 Shfit 43 Alt 43 S 进入Project Structure窗口 xff0c 先
  • GO语言开发环境配置(Linux)

    Go语言开发环境配置 xff08 Linux xff09 一 Go安装二 IDE安装三 Vim IDE 常用功能 一 Go安装 Go 有多种安装方式 xff0c 比如 Go 源码安装 Go 标准包安装 第三方工具 xff08 yum apt
  • HBase过滤器

    目录 一 介绍 1 hbase运算符 2 Hbase 过滤器的比较器 二 代码 1 hbase建表 2 创建数据 3 导入依赖 4 列值过滤器 5 单列值过滤器 6 单列值排除过滤器 7 rowkey过滤器 8 rowkey前缀过滤器 xf