`

hadoop写入hbase数据

 
阅读更多

 

 

贴下代码,留作备用,

 

   @Override
    public int run(String[] args) throws Exception {
        Configuration hbaseConf = HBaseConfiguration.create();
       /* String whh = hbaseConf.get("hbase.zookeeper.quorum");
        System.out.print(whh);*/
        Config config = new Config();
        config.initJarFile("mr_hbase.properties");
        String numReduceTasksStr = config.getValue("numReduceTasks");
        Integer numReduceTasks = 3;
        if (NumberUtils.isDigits(numReduceTasksStr)) {
            numReduceTasks = Integer.valueOf(numReduceTasksStr);

        }
        String hbaseZookeeperQuorum = config.getValue("hbase.zookeeper.quorum");
        hbaseConf.set("hbase.zookeeper.quorum", hbaseZookeeperQuorum);

        String hbaseZookeeperPropertyClientPort = config.getValue("hbase.zookeeper.property.clientPort");
        hbaseConf.set("hbase.zookeeper.property.clientPort", hbaseZookeeperPropertyClientPort);
        if (args.length > 2) {
            hbaseConf.set("hbase.zookeeper.quorum", args[2]);
        }

        Job job = Job.getInstance(hbaseConf);
        job.setJarByClass(BookKpUnitToHbaseMr.class);
        job.setMapperClass(BookKpUnitToHbaseMr.BookKpUnitToHbaseMapper.class);

        //将第一个路径参数作为输入参数
        FileInputFormat.setInputPaths(job, new Path(args[0]));
        //将第二个HBase表参数作为输出参数
        TableMapReduceUtil.initTableReducerJob(args[1], BookKpUnitToHbaseMr.BookKpUnitToHbaseReducer.class, job);  -----> 设置reducer的时候,使用org.apache.hadoop.hbase.mapreduce类

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(StudentKpInfo.class);

        //设置任务个数
        job.setNumReduceTasks(numReduceTasks);
        return job.waitForCompletion(true) ? 0 : 1;
    }  

 

 

 

 

 

 

 

   public static class toHbaseReducer extends TableReducer<Text, StudentScoreInfo, ImmutableBytesWritable> {   ----> hbase的TableReducer设计只接受rowkey,其余的列簇,列名,列值按写入代码时灵活设置,因此这个类只有ImmutableBytesWritable
        @Override
        protected void reduce(Text key, Iterable<StudentScoreInfo> values, Context context) throws IOException, InterruptedException {
            try {
                String rowkey = key.toString();
                Put put = new Put(rowkey.getBytes());
                for (StudentScoreInfo studentScoreInfo : values) {
                    put.addColumn(Bytes.toBytes("es"), Bytes.toBytes(studentScoreInfo.getStudentId()), Bytes.toBytes(studentScoreInfo.getStudentScoreValue()));  // 写入列,参数1分别为 es表示列簇    参数2表示列名  参数3表示列值 
                }
                context.write(new ImmutableBytesWritable(Bytes.toBytes(rowkey)), put);  // 将rowkey和这一列写入hbase
            } catch (Exception e) {
                logger.error("reduce error: ", e);
            }
        }
    }

 

分享到:
评论

相关推荐

    hadoop+hbase+zookeeper集群配置流程及文件

    在大数据处理领域,Hadoop、HBase和Zookeeper是三个至关重要的组件,它们共同构建了一个高效、可扩展的数据处理和存储环境。以下是关于这些技术及其集群配置的详细知识。 首先,Hadoop是一个开源的分布式计算框架,...

    hadoop和hbase集成所需jar包

    - `TableInputFormat` 和 `TableOutputFormat`:分别用于MapReduce作业读取和写入HBase表。 - `HTable` 和 `Put`/`Get`:在Mapper和Reducer中,使用`HTable`实例来与HBase表交互,`Put`用于写入数据,`Get`用于...

    Hadoop数据迁移--从Hadoop向HBase

    TableReducer能够直接将Map阶段产生的结果写入到HBase表中,实现了数据的最终迁移。 #### 数据插入机制与HBase表结构 在数据迁移的过程中,HBase的TableReducer使用`Put`对象来构建行数据,并将其插入到HBase中。...

    大数据云计算技术系列 Hadoop之Hbase从入门到精通(共243页).pdf

    HBase的数据在物理存储上采用HFile格式,这是一种优化的二进制文件格式,适用于随机读取和批量写入操作。HFile将数据按行键排序,提供高效的查找性能,并支持数据压缩,从而节省存储空间。 除了基本功能,HBase还与...

    基于Hadoop、HBase的wordcount代码.zip

    它们允许Hadoop作业直接读取HBase表的数据,或者将处理结果写入HBase,实现了数据处理与存储的一体化。 此外,为了优化性能,还可以考虑以下几点: 1. 配置Hadoop的MapReduce参数,如mapred.task.partition,以平衡...

    java集成hadoop-hbase用到的jar包

    Hadoop是一个分布式存储和计算框架,而HBase是一个构建在Hadoop之上的非关系型数据库(NoSQL),特别适合处理大规模数据。这里我们将详细探讨Java如何与这两个组件进行交互,并重点关注所需的jar包。 首先,Java...

    含有hadoop+hbase jar包

    HBase的数据模型基于Bigtable设计,提供随机读取和快速写入的能力,特别适合处理稀疏、多维度的数据。它利用HDFS作为底层存储,MapReduce进行批量数据处理,与Hadoop生态系统紧密集成。 Hadoop和HBase的结合使用,...

    (源码)基于Hadoop和HBase的日志数据处理系统.zip

    # 基于Hadoop和HBase的日志数据处理系统 ## 项目简介 本项目是一个基于Hadoop和HBase的日志数据处理系统,旨在通过Hadoop的MapReduce框架处理大规模日志数据,并将处理后的数据存储到HBase中。项目涵盖了日志数据...

    2013年中国数据库大会-04-小米hadoop/hbase微实践

    小米科技作为一家领先的互联网公司,其在数据处理和存储方面的需求巨大,因此Hadoop和HBase的实践显得尤为重要。 在演讲中,谢良首先分享了在Hadoop与HBase技术选型时的依据。Hadoop是一个由Apache基金会开发的...

    Hadoop+Hbase搭建云存储总结

    - **大数据分析:** 结合Hadoop的强大处理能力和Hbase的高效访问能力,适用于各类大数据分析场景。 - **实时查询:** 对于需要实时查询的场景,Hbase提供了低延迟的数据访问能力。 - **日志处理:** 大量的日志...

    2.1 hadoop+hbase部署和测试1

    在构建大数据处理平台时,Hadoop 和 HBase 是两个至关重要的组件。Hadoop 是一个开源的分布式计算框架,它提供了高可靠性和高容错性的数据存储和处理能力。而 HBase 是基于 Hadoop 的一个分布式、列式存储的数据库,...

    hadoop_hadoop-2.7.2-hbase-jar.rar linux下包

    7. **HBase的应用场景**:HBase常用于实时分析、日志处理、物联网(IoT)数据存储、社交媒体分析等领域,特别是那些需要快速随机读取和写入大量数据的场景。 8. **HBase的扩展性**:HBase通过RegionServer进行水平...

    hadoop&hbase;高可用测试环境搭建

    在构建大数据处理和存储系统时,Hadoop和HBase是两个关键组件。Hadoop是一个开源框架,主要用于分布式存储和计算,而HBase是基于Hadoop的分布式列式数据库,适用于实时查询和大规模数据处理。本教程将详述如何搭建一...

    Hadoop+Hbase.ppt

    在IT行业中,Hadoop和Hbase是两个非常重要的大数据处理工具。Hadoop是一个开源的分布式计算框架,而Hbase是一个基于Hadoop的分布式列式数据库。让我们深入探讨这两个技术的关键知识点。 首先,我们来看Hadoop的核心...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    接下来,我们要将读取到的HBase数据写入HDFS。Hadoop提供了`FileSystem`类来操作HDFS,我们可以使用`FSDataOutputStream`来写入文件。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration...

    Hadoop和Hbase测试题.pdf

    Hadoop和Hbase是大数据处理领域中的两个关键组件。Hadoop是一个开源的分布式计算框架,由Apache基金会维护,主要用于处理和存储大规模数据。Hbase是一个建立在Hadoop之上的分布式数据库,它支持实时读写,适用于...

    基于 hadoop,hbase的电商交易记录的简单分析.zip

    处理后的结果可以存储回HDFS,也可以实时写入HBase,方便后续的实时查询。 总结来说,Hadoop和HBase的组合为电商交易记录分析提供了强大支持。它们不仅能够处理海量数据,还具备高并发处理和实时查询的能力,帮助...

    Hadoop和Hbase测试题.docx

    在IT领域,Hadoop和Hbase是大数据处理和存储的关键技术。Hadoop是一个开源的分布式计算框架,由Apache基金会维护,主要用于处理和存储大规模数据集。Hbase则是一个基于Hadoop的分布式列式数据库,适合实时查询和大...

    Hadoop2.7Hbase1.1.3高可用集群安装与部署.pdf

    ### Hadoop2.7 HBase1.1.3 高可用集群安装与部署知识点解析 #### 一、部署前准备 - **操作系统**: CentOS 6.5_x64 - **安装目录**: /opt #### 二、节点分配 根据文档提供的节点分配表,我们可以了解到以下信息: ...

Global site tag (gtag.js) - Google Analytics