首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何做大表和大表的关联?

如何做大表和大表的关联?

作者头像
马克java社区
修改2021-07-06 11:07:09
修改2021-07-06 11:07:09
1.3K0
举报
文章被收录于专栏:java大数据java大数据

如何做大表和大表的关联? 对于大表和大表的关联: 1.reducejoin可以解决关联问题,但不完美,有数据倾斜的可能,如前所述。 2.思路:将其中一个大表进行切分,成多个小表再进行关联。

package com;

import org.apache.commons.lang.StringUtils;

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.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.Map;

public class MapJoinMapper extends Mapper<LongWritable, Text, Text, NullWritable> {

Map<String, String> dictMap = new HashMap<>();

Text k = new Text();

protected void setup(Context context) throws IOException, InterruptedException {

String path = context.getCacheFiles()[0].getPath();

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));

String line;

while (StringUtils.isNotEmpty(line = br.readLine())) {

String[] fields = line.split(",");

dictMap.put(fields[0], fields[1]+","+fields[2]);

}

br.close();

}

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

String orderLine = value.toString();

String[] fields = orderLine.split(",");

更多请见:https://blog.csdn.net/qq_44594249/article/details/96970999

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档