HBase Java API使用IDEA开发----mapreduce读取hdfs文件写入hbase

2023-10-30

一、配置hadoop读取hbase的支持包

    在hadoop-env.sh   添加export HADOOP_CLASSPATH=$HBASE_HOME/lib/*

  

 没有配置HBASE_HOME的去/etc/profile配置环境变量,路径根据你自己的自行修改

 二、把需要读取的文件上传到hdfs的/user目录下

hdfs dfs  -put /usr/local/software/hadoop/hadoop-3.3.0/stumer_in_out_details.txt   /user/

三、编写代码实现

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.LongWritable;
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 org.apache.hadoop.mapreduce.lib.input.TextInputFormat;


import java.io.IOException;
import java.nio.charset.StandardCharsets;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 使用MapReduce读取linux 本地文件写入hbase
 */
public class MapreduceFileToHbase {

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {

        String tableName="identify_rmb_records";
        //默认hdfs上的文件,需要提前把文件放上去
        Path inputDir=new Path("/user/stumer_in_out_details.txt");
        Configuration configuration=new Configuration();
        Job job=Job.getInstance(configuration,"mapreduce to hbase");
        job.setJarByClass(MapreduceFileToHbase.class);
        FileInputFormat.setInputPaths(job,inputDir);
        job.setInputFormatClass(TextInputFormat.class);
        job.setMapperClass(ImportMapper.class);
        TableMapReduceUtil.initTableReducerJob(
                tableName,null,job
        );
        job.setNumReduceTasks(0);
        System.exit(job.waitForCompletion(true) ? 0:1);
    }

    public static class ImportMapper extends Mapper<LongWritable, Text, ImmutableBytesWritable, Put> {
        private Put put= null;
        private ImmutableBytesWritable rowkey=new ImmutableBytesWritable();
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm");


        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String[] values=value.toString().split(",",-1);
            rowkey.set(Bytes.toBytes(values[0]));
            put=new Put(values[0].getBytes(StandardCharsets.UTF_8));
            long timeStamp=0;

            try {
                timeStamp=format.parse(values[2]).getTime();
            } catch (ParseException e) {
                e.printStackTrace();
            }
            put.addColumn("op_www".getBytes(StandardCharsets.UTF_8),"exists".getBytes(StandardCharsets.UTF_8),timeStamp,values[1].getBytes(StandardCharsets.UTF_8));
            put.addColumn("op_www".getBytes(StandardCharsets.UTF_8),"Bank".getBytes(StandardCharsets.UTF_8),timeStamp,values[3].getBytes(StandardCharsets.UTF_8));
            put.addColumn("op_www".getBytes(StandardCharsets.UTF_8),"uId".getBytes(StandardCharsets.UTF_8),timeStamp,values[4].getBytes(StandardCharsets.UTF_8));
            context.write(rowkey,put);
        }
    }
}

四、使用maven打包项目,上传到linux,执行程序

把jar包文件复制出来传到linu目录下 

在hadoop的bin目录下执行 hadoop jar  jar包名字  类名

./hadoop jar ../wordcount-1.0-SNAPSHOT.jar com.example.usehbase.MapreduceFileToHbase

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HBase Java API使用IDEA开发----mapreduce读取hdfs文件写入hbase 的相关文章

  • Android PhoneGap 插件,UI 选项卡栏,调整 WebView 大小

    我正在创建一个美味的 PhoneGap 插件 希望一旦它能被打开 准备好了 插件基本完成了 我只需要一个漂亮的用户界面 相互作用 简而言之 我想创建一个 本机 android 工具栏组件 如果您实现 PhoneGap UIControls
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • URL.setURLStreamHandlerFactory

    我正在使用带有嵌入式 Jetty 的可执行 jar 开发一个 Web 应用程序 我的jar包含一个依赖jar jar in jar 我参考了JarRsrcLoader and RsrcURLStreamHandlerFactory由 Ecl
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • IntelliJ IDEA 中多个 SVN 分支的工作流程

    我想使用 IntelliJ IDEA 在 SVN 主干和一个或几个功能分支之间轻松切换 最好能够同时在多个分支上工作 我有一些 本地 配置 例如用于集成测试的数据库设置和启用的调试日志记录 我想继续使用而不是提交到 SVN 各种选择的优缺点
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • 如何找到被点击的JLabel并从中显示ImageIcon?

    这是我的代码 我想知道哪个l单击 然后在新框架中显示该 ImageIcon e getSource 不起作用 final JFrame shirts new JFrame T shirts JPanel panel new JPanel n
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • Android Gradle 同步失败:无法解析配置“:classpath”的所有工件

    错误如下 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveException Could n
  • 为什么我的代码会产生错误:该语句没有返回结果集[重复]

    这个问题在这里已经有答案了 我正在从 Microsoft SQL Server Studio 执行以下查询 该查询工作正常并显示结果 SELECT INTO temp table FROM md criteria join WHERE us
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne

随机推荐

  • XLSX纯前端导出(简单导出)

    npm install xlsx 安装插件 直接上代码 div a a div
  • 或的方式触发多个条件

    或的方式触发多个条件 include
  • Bat批处理生成带随机数的毫秒时间戳验证码

    second bat echo off set temp Spring gt Echo WScript Echo new Date getTime for f a in cscript nologo e jscript do set tim
  • POJ 1789, Truck History

    Time Limit 2000MS Memory Limit 65536KTotal Submissions 5256 Accepted 1851 DescriptionAdvanced Cargo Movement Ltd uses tr
  • 图像的频谱图简单理解

    https zhuanlan zhihu com p 99605178 utm source qq https blog csdn net dazhuan0429 article details 85774692 一维信号的傅里叶变换 将一
  • Keil 5报错identifier “KEY0“ is undefined怎末解决呀大侠们【哭】

    错误 HARDWARE EXTI exti c 42 error 20 identifier KEY0 is undefined key c include key h include delay h 按键初始化函数 PA0 15和PC5
  • 把一个对象的key全部换成大写/小写

    前言 把一个对象 他的key都是大写 或者小写的情况下给他转换类型 大写 小写 实现效果 实现方法 1 封装两个方法 大写转换 export function upperJSONKey jsonObj for var key in json
  • robot framework 使用五:CentOS上运行robot framework 并自动发送测试结果

    操作系统版本 centos 6 0 x86 64 想要在linux上运行robot framework的测试用例 需要安装以下工具和软件 1 安装python 2 7 6 首先python version 查看系统是否装有python 并且
  • Python编程:实现整数反转(含完整源代码)

    Python编程 实现整数反转 含完整源代码 在Python中 实现整数反转非常简单 我们只需要将整数转换为字符串 然后对字符串进行反转操作 最后再将反转后的字符串转换回整数即可完成整数反转 下面是实现整数反转的Python源代码 def
  • 深入浅出--梯度下降法及其实现

    转自 https www jianshu com p c7e642877b0e 深入浅出 梯度下降法及其实现 六尺帐篷 关注 2018 01 17 21 06 字数 3001 阅读 1210 评论 2 喜欢 23 赞赏 1 梯度下降的场景假
  • 常用文件的文件头(十六进制)

    JPEG jpg 文件头 FFD8FF PNG png 文件头 89504E47 GIF gif 文件头 47494638 TIFF tif 文件头 49492A00 Windows Bitmap bmp 文件头 424D CAD dwg
  • 嘀嗒出行再闯IPO:千军万马我无懈

    羽扇纶巾笑谈间 千军万马我无懈 在激烈竞争中再度冲刺港交所IPO的嘀嗒出行 闪露出一丝歌词里的气魄 交通运输部下属网约车监管信息交互系统的数据显示 截至2023年1月31日 全国共有300家网约车平台公司取得网约车平台经营许可 在2022年
  • 隐式声明函数‘raw_copy_to_user’的问题

    隐式声明函数 raw copy to user 的问题 其实一般来说都是隐式声明函数 copy to user 的问题 这类问题你就看看有没有引用正确的头文件 例如有些是
  • 一些常见面试OO design题目总结

    最近很多公司面试喜欢问一些OO design的题目 我总结了一些比较高频的题目 需求不一定准确 设计的也不一定好 欢迎提出建议 1 电梯设计 2 停车厂设计 3 通用卡牌游戏blackjack设计 4 1 电梯设计 需求 以面向对象的方式设
  • vue知识点总结

    vue知识点总结 1 vue是渐进式的javaScript框架 其作者是尤雨溪是以为华裔前google工程师 是一个动态构建用户界面 个人理解为可以在一个界面中动态展示其中某一部分的数据显示 运行 转换等功能 相比于jsp html页面有着
  • VRRP技术(详解)

    一 VRRP的概述 用户一般都是采用一个默认的网关来访问外部网络 如果此时默认网关设备发生故障 将中 断所有用户终端的网络访问 导致不可挽回的损失 VRRP可以实现多网关 并且可以解决多网关运行中冲突的错误 二 VRRP术语 VRRP路由器
  • jvm面试题,jvm常见高频面试题汇总,必知必会

    1 Java 类加载过程 Java 类加载需要经历一下 7 个过程 1 加载 加载是类加载的第一个过程 在这个阶段 将完成一下三件事情 通过一个类的全限定名获取该类的二进制流 将该二进制流中的静态存储结构转化为方法去运行时数据结 构 在内存
  • 线程安全性分类

    1 不可变 不可变的对象一定是线程安全的 并且永远也不需要额外的同步 因为一个不可变的对象只要构建正确 其外部可见状态永远也不会改变 永远也不会看到它处于不一致的状态 Java 类库中大多数基本数值类如Integer String和BigI
  • Mysql5.7 + 查询并解析json数据方法(后转)

    说明 本文是对 Mysql5 7 查询并解析json数据方法 的补充说明 具体请点击查看 当前 也可以认为就是水贴 对于某个属性的值未数组的时候 我们取某一条中某一条某个元素 大家应该都理解了 具体 如下 详情请看上一篇 Mysql5 7
  • HBase Java API使用IDEA开发----mapreduce读取hdfs文件写入hbase

    一 配置hadoop读取hbase的支持包 在hadoop env sh 添加export HADOOP CLASSPATH HBASE HOME lib 没有配置HBASE HOME的去 etc profile配置环境变量 路径根据你自己