2、hbase 基本操作及性能优化

Hbase的API介绍

  • 准备操作
    在这里插入图片描述在这里插入图片描述
  • Hbase的DDL操作
    在这里插入图片描述
  • Hbase的DML操作:
    在这里插入图片描述
  • hbase的查询操作:查询hbase数据库中某一列族下的某一列的值,查询是要指定具体的rowKey
    在这里插入图片描述
  • HBase之六:HBase的RowKey设计
    https://www.cnblogs.com/duanxz/p/4660784.html
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

hbaseprotobuf讲解

  • 安装 Google Protocol Buffer
    展示安装的组信息:在这里插入图片描述
    查看软件需要依赖的组信息
    在这里插入图片描述安装依赖的工具:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 编辑phone.proto
    在这里插入图片描述
  • 利用protobuf工具生成对应的java文件
    在这里插入图片描述
  • 将多个列封装为对象,将整个对象插入到hbase数据表中
    在这里插入图片描述

Hbase的优化

查看hbase的优化文档

Hbase与map/reducer的整合

package com.bjsxt.wc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;


public class WCRunner {

	public static void main(String[] args) throws Exception {
		
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://node02:8020");
		conf.set("hbase.zookeeper.quorum", "node02,node03,node04");
		Job job = Job.getInstance(conf);
		job.setJarByClass(WCRunner.class);
		
		//指定mapper和reducer
		job.setMapperClass(WCMapper.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(IntWritable.class);
		
		//最后一个参数设置为false
		TableMapReduceUtil.initTableReducerJob("wc", WCReducer.class, job, null, null, null, null, false);
		
		FileInputFormat.addInputPath(job, new Path("/user/hive/warehouse/wc/"));
		job.waitForCompletion(true);
		
		
	}

}


package com.bjsxt.wc;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class WCMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
	
	@Override
	protected void map(LongWritable key, Text value, Context context)
			throws IOException, InterruptedException {
		String[] strs = value.toString().split(" ");
		for (String string : strs) {
			context.write(new Text(string), new IntWritable(1));
		}
	}
}


package com.bjsxt.wc;

import java.io.IOException;

import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;

public class WCReducer extends TableReducer<Text, IntWritable, ImmutableBytesWritable>{
	
	@Override
	protected void reduce(Text text, Iterable<IntWritable> iterable,Context context)
			throws IOException, InterruptedException {
		
		int sum = 0;
		
		for (IntWritable it : iterable) {
			sum+=it.get();
		}
		
		Put put = new Put(text.toString().getBytes());
		
		put.add("cf".getBytes(), "ct".getBytes(), (""+sum).getBytes());
		
		context.write(null, put);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值