当前位置: 首页 > 知识库问答 >
问题:

哈多普映射器输出到HBase表和减速器

陈允晨
2023-03-14

我正在尝试编写一个MapReduce作业,该作业可以解析CSV文件,将数据存储在HBase中并一次性执行简化函数。理想情况下,我想要

  1. 映射器输出良好记录到 HBase 表良好
  2. 映射器将坏记录输出到 HBase 表坏
  3. 映射器使用键将所有好的数据发送到化简器
  4. 还希望更新第三个表,表明存在新数据。此表将包含有关html" target="_blank">数据和日期的基本信息。最有可能的是每个 CSV 文件的一条或两条记录。

我知道如何使用HBase多表输出格式执行1和2,但不确定如何执行3和4。

任何关于如何做到这一点的建议都非常感谢。

我对如何做到这一点有一些想法:

对于1和2,我将ImmutableBytesWritable作为键,并且MultiTableOutputFormat负责从Mapper存储。但是对于3,我希望键是Text。

对于#4,我应该在映射器中通过

    < li >扫描第三个HBase表中的条目,如果没有,则填充,否则跳过。我不喜欢这样,因为感觉效率很低。 < li >或者我应该在Mapper中维护一个列表并在Mapper清理方法中写入HBase? < li >有更好的方法吗?

共有1个答案

井斌斌
2023-03-14

>

  • mapper通过设置KeyValueTextInputFormat读取csv。

    在映射器代码中,有一些逻辑来区分好的和坏的记录,并通过使用Put(Hbase Api调用)将它们放入Hbase中。

    在映射器设置中,可以初始化hbaseTable的处理程序。

    好的记录可以使用context.write(key,value)传递给reducer,并收集在reducer中

  •  类似资料:
    • reducer可以接受多个输入吗?两个映射器的键相同,但值类型不同。第一个是输出(text,floatwritable)的MapReduce程序,其中floatwritable是值类型,text是键。第二个是一个输出(文本,歌曲)的映射器,其中歌曲是实现可写的自定义数据类型。我想要一个缩减器,在运行计算的同时,获取早期map reduce和第二个mapper的输出。我认为第一个MapReduce程

    • 我在1.1GB文件上运行Hadoop MapReduce多次,使用不同数量的映射器和化简器(例如,1个映射器和1个化简器,1个映射器和2个化简器,1个映射器和4个化简器,...) Hadoop安装在具有超线程的四核机器上。 以下是按最短执行时间排序的前 5 个结果: 1 - 8 个化简器和 1 - 8 个映射器的结果:列 = 映射器行数 = 化简器数 (1)当我有8个映射器时,程序运行速度似乎稍快

    • 本文向大家介绍MyBatis输入映射和输出映射实例详解,包括了MyBatis输入映射和输出映射实例详解的使用技巧和注意事项,需要的朋友参考一下 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口

    • MapReduce传递和发出键值对的基本信息。我需要弄清楚我们通过什么和发出什么。以下是我的关注点:MapReduce输入和输出: 1.Map() 方法 - 它是否采用单个或列表的键值对并发出什么?2.对于每个输入键值对,发出什么映射器?相同类型还是不同类型 ?3.对于每个中间键,减速器会发出什么?类型是否有任何限制?4.减速机接收所有具有相同键的值。值将如何排序,如排序或轨道排序?该顺序是否因运

    • 我想知道如果我在现有的hbase表上创建phoenix表,它是复制(或复制)hbase表中存在的数据,还是phoenix表只是链接到hbase中存在的现有数据? 我的phoenix版本是<4.12.0,所以这个错误仍然适用于我的版本&因此不能在现有的hbase表上创建视图。

    • 我正在学习Hadoop,并尝试执行我的Mapduce程序。所有Map任务和Reduce er任务都完成得很好,但Reducer将Mapper Output写入Output文件。这意味着根本没有调用Reduce函数。我的示例输入如下所示 预期输出如下所示 以下是我的计划。 这里问了同样的问题,我在reduce函数中使用了Iterable值作为该线程中建议的答案。但这并不能解决问题。我不能在那里发表评