MapReduce 订单和商品pid替换(Map Join)基本实现

zz/2024/5/21 21:38:12

思路简介

首先在Map阶段初始化时读取替换表的内容存入内存中,然后在Map阶段map方法时将其进行替换。所以只需要Map阶段即可,不需要Reduce阶段。

输入数据

order.txt 订单表数据(间隔:\t)

订单id 商品id 数量

1001	01	1
1002	02	2
1003	03	3
1004	01	4
1005	02	5
1006	03	6

pd.txt 商品表数据(间隔:\t)

商品id 商品名字

01	小米
02	华为
03	红米

Maven和log4j.properties配置

参考 MapReduce统计流量案例 中的配置  

自定义Mapper类实现(MapJoinMapper)

package com.test.mapreduce.mapjoin;import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.BufferedReader;
import java.io.IOException;

http://www.ngui.cc/zz/2700886.html

相关文章

c++移动语义、万能引用、引用折叠、完美转发

想了解标题的内容,我们可以先简单了解下c中的左值和右值。 左值和右值 左值:能对表达式取地址,就是左值右值:不能对表达式取地址,就是右值将亡值:和右值引用相关的表达式,这样的表达式通常是将…

Ubuntu14.04安装CMake3.5.1

1、下载cmake-3.5.1.tar.gz:https://cmake.org/download/ 2、把 cmake-3.5.1.tar.gz放到任意临时目录(因为Cmake的安装路径默认在:/usr/local/中),接着查看 cmake-3.5.1.tar.gz的权限(如果权限不足,就不能顺利操作&…

ASP.NET 实现邮箱发送随机验证码功能(详解)

一&#xff1a;前端页面添加一个邮件发送按钮&#xff08;button控件&#xff09; <div> <asp:Button ID"Button1" runat"server" Text"发送验证码" OnClick"Button1_Click" /> </div> 二&#xff1a;后台对butt…

LoadRunner脚本中添加关联函数,提示Connot start replay due to compilation errors

LoadRunner脚本中添加关联函数&#xff0c;提示Connot start replay due to compilation errors 今天在编辑脚本时&#xff0c;用fiddler抓到一个包里的数据&#xff0c;对包里的username进行关联函数 从上面可以看出&#xff0c;我要关联的是username&#xff0c;查看它的左…

接口测试的基础知识

接口测试的基础知识 1.接口分类: 软件接口:接口是双方(可能是系统、模块、服务等)之间数据交互的一个标准,定制接口方要想让对方没有疑问。 硬件接口:网卡、USB等 2.接口测试的定义: 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以…

selenium中的鼠标事件及浏览器的操作

selenium中的鼠标事件及浏览器的操作 在做UI自动化时,是模仿我们手动操作界面,免不了鼠标点击,双击,左键,选中内容,悬停等操作。那今天给大家看一的如何在Python自动化代码中实现这些操作,还是以百度首页为例,对页面的一些标签选项进行操作。干讲语法知识点还不如看源…

谈《征服Ajax——Dojo、Prototype、script.aculo.us框架解析与实例》一书的选题

这本书从编写、出版至今已经8、9个月了&#xff0c;网上也有一些读者提出各种意见和建议&#xff0c;本人一直认真汲取。 本书写于Ajax技术火热之中&#xff0c;当渐渐了解、熟悉了什么是Ajax&#xff0c;是不是应该实实在在地应用它呢&#xff1f;这是我的思考。谈到开发&…

作为函数参数的多维数组

与一维数组名相同&#xff0c;参数传递的是个指向数组第一个元素的指针&#xff0c;区别在于&#xff1a;多维数组的每个元素本身是另外 一个数组&#xff0c;编译器需要知道它的维数&#xff0c;以便为形参下标表达式求值。 int vector[10]void func1(int *vec);void func1(i…

testLib

/*函数:time_begin/time_end功能:成对儿使用。测试耗时&#xff0c;time_end()返回ms*/void time_begin(struct timeval *pstTime){gettimeofday(pstTime,NULL);}int time_end(struct timeval *pstTime){struct timeval stTime2;long ms0;gettimeofday(&stTime2,NULL);if (…

使用Dragonfly ORS快速查看对比ROI体积

作者&#xff1a;金铸 以下主要演示了快速展示样品总体积和样品中的钻石体积&#xff0c;并进行快速对比。 上图为该样品。 首先&#xff0c;点击数据集&#xff0c;在数据集下方我们可以看到该数据集的基本属性&#xff0c;其中包涵了该数据集的Voxels和体积等信息。 其次&am…