博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS数据更新到hbase表
阅读量:6004 次
发布时间:2019-06-20

本文共 2521 字,大约阅读时间需要 8 分钟。

hot3.png

1,map类

public static class MyMapper extends Mapper
{ List
putList = new LinkedList
(); HTableInterface bvuser; public MyMapper() { }  //这个方法每个map任务只调用一次 @Override protected void setup(final Context context) throws IOException, InterruptedException { bvuser = new HTable(context.getConfiguration(),"bvuser"); BufferedReader br = new BufferedReader(new InputStreamReader(FileSystem.get(context.getConfiguration()).open(new Path("hdfs文件路径")))); String line = null; while((line = br.readLine()) != null){ } IOUtils.closeQuietly(br); }  //hdfs的每行数据会调用一次 @Override public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException { Counter counter = context.getCounter("group", "mapcount"); counter.increment(1); String line = value.toString(); if(line==null || line.isEmpty()){ return; } Put put = new Put(Bytes.toBytes("3136949-" + userId)); put.add(Bytes.toBytes("info"), Bytes.toBytes("billTypes"), System.currentTimeMillis(), Bytes.toBytes(StringUtils.join(typeidSet, ","))); putList.add(put); if(putList.size()==1000){ bvuser.put(putList); putList.clear(); } }  //每个任务只掉用一次 @Override protected void cleanup(Context context) throws IOException, InterruptedException { if(!putList.isEmpty()){ bvuser.put(putList); putList.clear(); } bvuser.close(); }}

 

2,Main方法

Configuration conf = HBaseConfiguration.create();final Job job = Job.getInstance(conf, "data-save-job");//格式化文件 文本形式 相当于字符串job.setInputFormatClass(TextInputFormat.class);job.setJarByClass(TextFile2HbaseJob.class);//设置map类job.setMapperClass(MyMapper.class);//设置map的输出结果job.setMapOutputKeyClass(NullWritable.class);job.setMapOutputValueClass(Text.class);FileOutputFormat.setOutputPath(job, new Path(output));FileSystem fs = FileSystem.get(conf);FileStatus[] files = fs.listStatus(new Path(input), new PathFilter() {    @Override    public boolean accept(Path path) {        return path.getName().startsWith("part-m");    }});if (files.length == 0) {    throw new IllegalStateException("no file");}//整个目录下的文件都加进去 /export/part-m-0000000,part-m-0000000格式for (FileStatus file : files) {    FileInputFormat.addInputPath(job, file.getPath());}//设置reduce数0job.setNumReduceTasks(0);

 

转载于:https://my.oschina.net/momisabuilder/blog/680923

你可能感兴趣的文章
directive ngChecked
查看>>
面试110道题
查看>>
python 08 文件操作
查看>>
强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
查看>>
Gradle 配置debug和release工程目录
查看>>
curl指令的使用
查看>>
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
查看>>
MongoDB repl set权限认证配置步骤
查看>>
java学习笔记(1)
查看>>
禁止Mysql默认端口访问Internet - MySQL - IT技术网
查看>>
基于用户投票的排名算法(二):Reddit
查看>>
下午最后的草坪
查看>>
Maven学习总结(七)——eclipse中使用Maven创建Web项目
查看>>
用PHP读取和编写XML DOM4
查看>>
1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组...
查看>>
vim配置及快捷键
查看>>
2018省赛赛第一次训练题解和ac代码
查看>>
UWP Composition API - 锁定列的FlexGrid
查看>>
[转载] win10进行端口转发
查看>>
利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
查看>>