zoukankan      html  css  js  c++  java
  • springboot集成hbase

    springboot-habse:

    https://github.com/spring-projects/spring-hadoop-samples/tree/master/hbase

    依赖:

     <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-hadoop-hbase</artifactId>
                <version>2.5.0.RELEASE</version>
            </dependency>
     
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-client</artifactId>
                <version>1.1.2</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-hadoop</artifactId>
                <version>2.5.0.RELEASE</version>
            </dependency>

    增加配置

    官方提供的方式是通过xml方式,简单改写后如下:

    @Configuration
    public class HBaseConfiguration {
     
        @Value("${hbase.zookeeper.quorum}")
        private String zookeeperQuorum;
     
        @Value("${hbase.zookeeper.property.clientPort}")
        private String clientPort;
     
        @Value("${zookeeper.znode.parent}")
        private String znodeParent;
     
        @Bean
        public HbaseTemplate hbaseTemplate() {
            org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
            conf.set("hbase.zookeeper.quorum", zookeeperQuorum);
            conf.set("hbase.zookeeper.property.clientPort", clientPort);
            conf.set("zookeeper.znode.parent", znodeParent);
            return new HbaseTemplate(conf);
        }
    }

    application.yml:

    hbase:
      zookeeper:
        quorum: hadoop001,hadoop002,hadoop003
        property:
          clientPort: 2181
     
    zookeeper:
      znode:
        parent: /hbase
    HbaseTemplate test :
    @Service
    @Slf4j
    public class HBaseService {
     
     
        @Autowired
        private HbaseTemplate hbaseTemplate;
     
     
        public List<Result> getRowKeyAndColumn(String tableName, String startRowkey, String stopRowkey, String column, String qualifier) {
            FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
            if (StringUtils.isNotBlank(column)) {
                log.debug("{}", column);
                filterList.addFilter(new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(column))));
            }
            if (StringUtils.isNotBlank(qualifier)) {
                log.debug("{}", qualifier);
                filterList.addFilter(new QualifierFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(qualifier))));
            }
            Scan scan = new Scan();
            if (filterList.getFilters().size() > 0) {
                scan.setFilter(filterList);
            }
            scan.setStartRow(Bytes.toBytes(startRowkey));
            scan.setStopRow(Bytes.toBytes(stopRowkey));
     
            return hbaseTemplate.find(tableName, scan, (rowMapper, rowNum) -> rowMapper);
        }
     
        public List<Result> getListRowkeyData(String tableName, List<String> rowKeys, String familyColumn, String column) {
            return rowKeys.stream().map(rk -> {
                if (StringUtils.isNotBlank(familyColumn)) {
                    if (StringUtils.isNotBlank(column)) {
                        return hbaseTemplate.get(tableName, rk, familyColumn, column, (rowMapper, rowNum) -> rowMapper);
                    } else {
                        return hbaseTemplate.get(tableName, rk, familyColumn, (rowMapper, rowNum) -> rowMapper);
                    }
                }
                return hbaseTemplate.get(tableName, rk, (rowMapper, rowNum) -> rowMapper);
            }).collect(Collectors.toList());
        }
    }
  • 相关阅读:
    服务器并发由200到4000并发的一个优化
    HTTP之一 If-Modified-Since & If-None-Match
    HTTP之二 http 301 和 302的区别
    003_内存的深入理解
    002_IO磁盘深入理解
    django学习笔记【003】创建第一个带有model的app
    MySQL innodb_autoinc_lock_mode 详解
    django学习笔记【002】创建第一个django app
    django学习笔记【001】django版本的确定&创建一个django工程
    innodb引擎redo文件维护
  • 原文地址:https://www.cnblogs.com/lshan/p/12096832.html
Copyright © 2011-2022 走看看