Hbase之批量数据写入

/**
 * Created by similarface on 16/8/16.
 */

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.client.BufferedMutator;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Mutation;
import java.util.List;
import java.util.ArrayList;
public class PutBufferExample {
    public static void main(String[] args) throws IOException {
        //获取陪着参数
        Configuration config = HBaseConfiguration.create();
        //建立连接
        Connection connection = ConnectionFactory.createConnection(config);
        try {
            //连接表 获取表对象
            Table t = connection.getTable(TableName.valueOf("testtable"));
            BufferedMutator table = connection.getBufferedMutator(TableName.valueOf("testtable"));
            try {
                Put p = new Put(Bytes.toBytes("myrow-1"));
                //p.add(); 这个地方的add 是个过期的方法然而我并不知道Cell的用法是什么
                p.add(Bytes.toBytes("colfam1"), Bytes.toBytes("name1"), Bytes.toBytes("zhangsan1"));
                //table.put(p);
                List<Mutation> mutations = new ArrayList<Mutation>();
                mutations.add(p);
                table.mutate(mutations);
                //如果不flush 在后面get可能是看不见的
                table.flush();
                // Close your table and cluster connection.
                Get get=new Get(Bytes.toBytes("myrow-1"));
                Result result=t.get(get);
                for(Cell cell:result.rawCells()){
                    System.out.print("行健: "+new String(CellUtil.cloneRow(cell)));
                    System.out.print("\t列簇: "+new String(CellUtil.cloneFamily(cell)));
                    System.out.print("\t列: "+new String(CellUtil.cloneQualifier(cell)));
                    System.out.print("\t值: "+new String(CellUtil.cloneValue(cell)));
                    System.out.println("\t时间戳: "+cell.getTimestamp());
                }
                System.out.print(">>>>end");
            } finally {
                if (table != null) table.close();
            }
        } finally {
            connection.close();
        }
    }
}

  

时间: 2024-10-05 21:53:31

Hbase之批量数据写入的相关文章

7.从Hbase中读取数据写入hdfs

/** public abstract classTableMapper<KEYOUT, VALUEOUT> extends Mapper<ImmutableBytesWritable,Result, KEYOUT, VALUEOUT> { }  *@author [email protected]  *  */ public class HbaseReader {          publicstatic String flow_fields_import = "fl

使用bulkload向hbase中批量写入数据

1.数据样式 写入之前,需要整理以下数据的格式,之后将数据保存到hdfs中,本例使用的样式如下(用tab分开): row1 N row2 M row3 B row4 V row5 N row6 M row7 B 2.代码 假设要将以上样式的数据写入到hbase中,列族为cf,列名为colb,可以使用下面的代码(参考) 1 package com.testdata; 2 3 import java.io.IOException; 4 import org.apache.hadoop.conf.Co

hbase数据写入流程深度解析

2019/3/28 星期四hbase数据写入流程深度解析在看此链接之前,可以写查看 hbase读写请求详细解释 中的写请求流程 https://blog.51cto.com/12445535/2356085 简介:hbase设置之初就是为了应对大量的写多读少的应用,他出色的写性能,在一个100台RS的集群可以轻松地支撑每天10T的写入量.hbase的写数据流程大体分为3部分1.客户端的写入流程2.服务端的写入流程3.wal的工作原理 我们先回顾一下hbase写数据流程写请求处理过程小结1 cli

HBase 高性能获取数据 - 多线程批量式解决办法

在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题.下面首先简单介绍了搜索引擎的性能,然后详细说明了HBase与MySQL的性能对比,这里的数据都是经过实际的测试获得的.最后,给出了采用多线程批量从HBase中取数据的方案,此方案经过测试要比通过自定义Filter的方式性能高出很多. Solr和HBase专辑 1.“关于Solr的使用总结的心得体会”(http:

spark 数据写入到 hbase

1)spark把数据写入到hbase需要用到:PairRddFunctions的saveAsHadoopDataset方法,这里用到了 implicit conversion,需要我们引入 import org.apache.spark.SparkContext._ 2)spark写入hbase,实质是借用了org.apache.hadoop.hbase.mapreduce.TableInputFormat这个对象,用其内部的recorderWriter将数据写入hbase 同时,也借用了had

hbase使用MapReduce操作4(实现将 HDFS 中的数据写入到 HBase 表中)

实现将 HDFS 中的数据写入到 HBase 表中 Runner类 1 package com.yjsj.hbase_mr2; 2 3 import com.yjsj.hbase_mr2.ReadFruitFromHDFSMapper; 4 import com.yjsj.hbase_mr2.WriteFruitMRFromTxtReducer; 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.c

Hbase之批量删除数据

import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; impor

HBase 高性能加入数据 - 按批多“粮仓”式解决办法

摘要:如何从HBase中的海量数据中,以很快的速度的获取大批量数据,这一议题已经在<HBase 高性能获取数据>(http://www.cnblogs.com/wgp13x/p/4245182.html)一文中给出了解决办法.那么,如何向HBase中高性能的插入数据呢?经研究表明,光是批量写入也还是不行.网上没有现成的方法.本文针对这一问题,给出了一个解决方案.它采用了多线程按批“多粮仓”的方式,经过验证,能较好的达到高速度的效果. 关键词:hbase, 高性能, 多线?程, 算法 解决问题:

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很