在resources目录下添加hdfs-site.xml,core-site.xml,mapred-site.xml,yarn-site.xml,hbase-site.xml配置文件,直接从服务器复制就行了

Hdfs2Hbase代码编写步骤:

1、在pom.xml里添加依赖

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.example

Code

1.0-SNAPSHOT

org.apache.hadoop

hadoop-auth

3.1.3

org.apache.hadoop

hadoop-client

3.1.3

org.apache.hadoop

hadoop-hdfs

3.1.3

org.apache.hadoop

hadoop-common

3.1.3

org.apache.hadoop

hadoop-auth

3.1.3

org.apache.hbase

hbase-mapreduce

2.2.2

org.apache.hbase

hbase-common

2.2.2

org.apache.hbase

hbase-client

2.2.2

junit

junit

4.12

test

org.testng

testng

6.14.3

test

commons-io

commons-io

2.6

org.apache.maven.plugins

maven-compiler-plugin

3.1

1.8

1.8

src/main/resources

**/*

false

2、主程序

import com.sun.jersey.core.util.StringIgnoreCaseKeyComparator;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.*;

import org.apache.hadoop.hbase.io.ImmutableBytesWritable;

import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;

import org.apache.hadoop.hbase.mapreduce.TableReducer;

import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.NullWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import java.io.IOException;

public class Hdfs2Hbase {

static String TABLE_NAME = "hdfs2hbase";

static String ZK_CONNECT_STR = "LianTian:2181";

public static class Hdfs2HbaseMapper extends Mapper {

@Override

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

context.write(key, value);

}

}

public static class Hdfs2HBaseReducer extends TableReducer {

@Override

protected void reduce(LongWritable key, Iterable values, Context context)

throws IOException, InterruptedException {

for (Text value : values) {

String[] words = value.toString().split(" ");

Put put = new Put(Bytes.toBytes(words[0]));

put.addColumn("info".getBytes(),"word".getBytes(),words[1].getBytes() );

context.write(NullWritable.get(), put);

}

}

}

public static void main(String[] args) throws Exception {

Configuration conf = HBaseConfiguration.create();

conf.set("hbase.zookeeper.quorum", ZK_CONNECT_STR);

conf.set("mapred.jar", "D:\\大数据技术与应用专业\\HBase\\Code\\target\\Code-1.0-SNAPSHOT.jar");

System.setProperty("HADOOP_USER_NAME", "adolph");

Connection conn = ConnectionFactory.createConnection(conf);

Admin admin = conn.getAdmin();

TableName tableName = TableName.valueOf(TABLE_NAME);

if (!admin.tableExists(tableName)) {

HTableDescriptor desc = new HTableDescriptor(tableName);

HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("info".getBytes());

hColumnDescriptor.setValue("VERSIONS", "5");

desc.addFamily(hColumnDescriptor);

admin.createTable(desc);

}

Job job = Job.getInstance(conf);

job.setJarByClass(Hdfs2Hbase.class);

job.setMapperClass(Hdfs2HbaseMapper.class);

job.setReducerClass(Hdfs2HBaseReducer.class);

TableMapReduceUtil.initTableReducerJob(TABLE_NAME, Hdfs2HBaseReducer.class, job);

// hdfs集群上词频统计后的文件

FileInputFormat.setInputPaths(job, new Path("hdfs://LianTian:9000/1.txt"));

// map阶段的输出类型

job.setMapOutputKeyClass(LongWritable.class);

job.setMapOutputValueClass(Text.class);

// 最终的输出类型

job.setOutputKeyClass(NullWritable.class);

job.setOutputValueClass(Put.class);

// 提交job

boolean statue = job.waitForCompletion(true);

System.exit(statue ? 0 : 1);

}

}

3、在idea编写hdfs2hbase代码运行出现以下错误

4、解决方法:在mapred-site.xml加入如下内容

mapreduce.app-submission.cross-platform

true

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: