??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
HBase的java编程实例-写入词频统计

转载   2014-05-28   浏览量:956


//下面代码需要新建一个文本文件作为读取内容
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.util.ArrayList;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.KeyValue;
/*
 * @author michael
 * 2014.4.22
 *
 * */
public class HBaseSample {
    static Configuration conf=null;
    static{
        conf=HBaseConfiguration.create();// this is used to configure the hbase
        conf.set("hbase.zookeeper.quorum", "localhost");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HBaseSample tableNew=new HBaseSample();
        try {
            HBaseAdmin admin=new HBaseAdmin(conf);
            if(admin.tableExists("shakespeare"))   //if the table has existed,delete it
            {
                admin.disableTable("shakespeare");
                admin.deleteTable("shakespeare");
            }
            tableNew.createTable("shakespeare", new String[]{"word","count"}); //create the table
            BufferedReader reader=new BufferedReader(new
                    FileReader("wordCountPart.txt"));
            String str,rowkey,word,value;
            int rowNum=0;
            while((str=reader.readLine())!=null)   //循环从文本中读入数据;文本中的每一行是:word count;例如:  a 111;
            {
                rowNum++;
                rowkey=String.valueOf(rowNum);
                word=str.split("\t")[0]; //以tbale键分开
                value=str.split("\t")[1];
                tableNew.insertRow("shakespeare",rowkey,"word","the only word",word);
                tableNew.insertRow("shakespeare",rowkey,"count",word+"'s value",value);
            }
            reader.close();
            System.out.println("下面输出整张表");
            tableNew.showAll("shakespeare");
                    }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /*****
     * create a table,and assign the column
     * */
    public void createTable(String tableName,String columns[])throws Exception{
        HBaseAdmin admin=new HBaseAdmin(conf); //客户端管理工具类
        if(admin.tableExists(tableName))
            System.out.println("The table is already exist");
        else
        {
            HTableDescriptor table=new HTableDescriptor(tableName);
            for(String c:columns)
            {
                HColumnDescriptor col=new HColumnDescriptor(c);
                table.addFamily(col);
            }
            admin.createTable(table);
            admin.close();
            System.out.println("The table has been created successfully");
        }
    }
    /**
     * delete the table
     * */
    public void deleteTable(String tableName)throws Exception
    {
        HBaseAdmin hAdmin=new HBaseAdmin(conf);
        if(hAdmin.tableExists(tableName))
        {
            hAdmin.disableTable(tableName);
            hAdmin.deleteTable(tableName);
            
        }
        System.out.println("the table has been deleted successfully!");
    }
    /**
     * add the data
     * */
    public static Put insertRowByPut(String row,String columnFamily,
            String column, String value)
    {
        Put put=new Put(Bytes.toBytes(row));
        put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),
                Bytes.toBytes(value));
        return put;
        
        
    }
    public void insertRow(String tableName,String row,String columnFamily,
            String column, String value)throws Exception{
        HTable table=new HTable(conf,tableName);
        Put put=new Put(Bytes.toBytes(row));
        put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),
                Bytes.toBytes(value));
        table.put(put);
        table.close();
        System.out.println("The data has been inserted successfully!");
    }
    /**
     * 删除多条数据
     * */

    public void deleteByRow(String tableName,String rowkey[])throws Exception
    {
        HTable h=new HTable(conf,tableName);
        Listlist=new ArrayList();
        //Get g=new Get(Bytes.toBytes(rowkey));
        for(String k:rowkey)
        {
            Delete d=new Delete(Bytes.toBytes(k));
            list.add(d);
        }
        h.delete(list);
        h.close();
    }
    /**
     * 得到一个数据
     * */
    public void getOneDataByRowKey(String tableName,String rowkey) throws Exception
    {
        HTable h=new HTable(conf,tableName);
        Get g=new Get(Bytes.toBytes(rowkey));
        Result r=h.get(g);
        for(KeyValue k:r.raw()){
            System.out.println("行是:"+Bytes.toStringBinary(k.getRow()));
            System.out.println("时间戳是:"+k.getTimestamp());
            System.out.println("列族是:"+Bytes.toStringBinary(k.getFamily()));
            System.out.println("列是:"+Bytes.toStringBinary(k.getQualifier()));
            String ss=Bytes.toString(k.getValue());
            System.out.println("值是"+ss);
        }
        h.close();
    }
    /**
     * 扫描所有的数据
     * */
    public void showAll(String tableName) throws Exception{
        HTable h=new HTable(conf,tableName);
        Scan scan=new Scan();
        ResultScanner scanner=h.getScanner(scan);
        for(Result r:scanner)
        {
            
            System.out.println("==============================");
            for(KeyValue k:r.raw())
            {
                System.out.println("the rowkey:"+Bytes.toStringBinary(k.getRow()));
                System.out.println("the TimeStap:"+k.getTimestamp());
                System.out.println("the ColumnKey:"+Bytes.toStringBinary(k.getFamily()));
                System.out.println("the Column:"+Bytes.toStringBinary(k.getQualifier()));
                String ss=Bytes.toString(k.getValue());
                System.out.println("the value:"+ss);
            }
        }
        h.close();
    }
    
}



转载自:https://www.2cto.com/kf/201405/304761.html

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



HBase之Rowkey设计总结及方舟实战篇
一、引言HBase由于其存储和读写的高性能,在OLAP即时分析中越来越发挥重要的作用,在易观精细化运营产品--易观方舟也有广泛的应用。作为Nosql数据库的一员,HBase查询只能通过其Rowkey来查询(Rowkey用来表示唯一一行记录),Rowkey设计的优劣直接影响读写性能。HBase中的数据是按照Rowkey的ASCII字典顺序进行全局排序的,有伙伴可能对ASCII字典序印象不够深刻,下面...
HBase的java编程实例-写入词频统计
下面代码需要新建一个文本文件作为读取内容importjavaioBufferedReader;importjavaioFileReader;importjavautilList;importjavautilArrayList;importorgapachehadoopconfConfigura
Hbase regionserver 逐个挂掉的问题分析
最近遇到一个比较诡异的问题,一个regionserver由于GC的原因,导致与zookeeper链接超时,最终被踢出集群。但是,接下来的现象,才是噩梦的开始?。?!
hbaseshell基本操作简介(代码)
hbaseshell基本操作简介(代码)。之前介绍了hbase的安装,现在来简介下hbase的基本操作:1启动hbase
Hbase操作命令大全
Hbase操作命令大全。一Hbase操作命令;二Namespace操作。
Hbase之Shell基本命令
Hbase之Shell基本命令?;久睿喊沧巴旰罂梢栽阡榔髦惺淙胂旅娴腢RL来测试安装是否成功:http:localhost:60010hbase目录输出日志文件所在位置:$HBASE_HOMElogs进入hbaseshellconsole$HBASE_HOMEbinhbaseshell如果有kerberos认证,需要事先使用相应的ke
HBase:架构,Compaction合并操作
HBase:架构,Compaction合并操作。compaction合并操作:compaction操作将小文件合并成大文件,加快查询速度,减少文件数量,减少资源占用。compaction分为两种:
Hbase对数据表的增删改查和对数据的增删改查
Hbase对数据表的增删改查和对数据的增删改查。
HBase的复制函数CopyToTable
HBase的复制函数CopyToTable。在日常的生产环境中,通常需要将一张已有的hbase表格直接复制给在hbase中的另一张表格,那么可以通过命令行直接调用CopyToTable来实现。首先在hbase中有一张表,如下:
HBase计算表的总count
HBase计算表的总count。