如何使用MapReduce连接两个表?

时间:2014-08-01 10:52:54

标签: mapreduce

我有两个表员工和这样的工资

CREATE TABLE `employees` (  
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
  `hire_date` date NOT NULL,
  PRIMARY KEY (`emp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`),
KEY `emp_no` (`emp_no`),
CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`)
    ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我们如何使用map reduce程序加入这两个表,你能为此提供解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤执行此操作:

  1. 从csv文件中的两个表中提取数据。
  2. 读取mapper中的两个文件,并将密钥作为主键(emp_no)。
  3. 将reducer的putput以csv格式写入文件。
  4. 使用mysql bulk import命令导入文件。
  5. 如果您在表中动态生成数据,则只从第1步的每个表中提取生成的数据