首页 > 其他分享 >mapreduce案例_用户停留时间关联城市名

mapreduce案例_用户停留时间关联城市名

时间:2024-11-07 21:41:49浏览次数:4  
标签:city 停留时间 String Text mapreduce 案例 job new import

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

class WithCityMapper extends Mapper<LongWritable, Text,Text,Text>{
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        FileSplit inputSplit = (FileSplit) context.getInputSplit();
        String name = inputSplit.getPath().getName();
        if (name.startsWith("part")){
            String line = value.toString();
            String[] info = line.split("\t");
            String time = info[1];
            String[] split= info[0].split("-");
            String phoneNum = split[0];
            String city_id = split[1];
            context.write(new Text(city_id),new Text("#"+phoneNum+"-"+time));
        }

        if (name.startsWith("city")){
            String line = value.toString();
            String[] info = line.split(",");
            String city_id = info[0];
            String city_name = info[1];
            context.write(new Text(city_id),new Text("$"+city_name));
        }
    }
}

class WithCityReducer extends Reducer<Text,Text,Text,Text>{
    @Override
    protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, Text, Text>.Context context) throws IOException, InterruptedException {
        String phoneNumAndTime =null;
        String city_name =null;
        String city_id = key.toString();

        for (Text value : values) {
            String line = value.toString();
            if (line.startsWith("#")){
                phoneNumAndTime=line.substring(1);
            }
            if (line.startsWith("$")){
                city_name=line.substring(1);
            }
        }
        if (phoneNumAndTime!=null){
            String[] info = phoneNumAndTime.split("-");
            String phoneNum = info[0];
            String time = info[1];
            if (city_name!=null){
                context.write(new Text("城市id:"+city_id),new Text(" 城市:"+city_name+" 手机号:"+phoneNum+" 平均停留时间:"+time));
            }else {
                context.write(new Text("城市id:"+city_id),new Text("城市:"+"未知"+" 手机号:"+phoneNum+" 平均停留时间:"+time));
            }
        }
    }
}

public class YHWithCity {
    public static void main(String[] args) throws Exception{
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://master:9000");

        Job job = Job.getInstance(conf);

        job.setJarByClass(YHWithCity.class);

        job.setJobName("用户平均停留时长数据关联城市名统计案例");

        job.setMapperClass(WithCityMapper.class);

        job.setReducerClass(WithCityReducer.class);

        job.setMapOutputKeyClass(Text.class);

        job.setMapOutputValueClass(Text.class);

        job.setOutputKeyClass(Text.class);

        job.setOutputValueClass(Text.class);

        FileInputFormat.setInputPaths(job,new Path(args[0]));

        FileOutputFormat.setOutputPath(job,new Path(args[1]));

        boolean b = job.waitForCompletion(true);
        if (b){
            System.out.println("用户平均停留时长数据关联城市名案例mapreduce实现执行成功!>_-");
        }else {
            System.out.println("用户平均停留时长数据关联城市名案例mapreduce实现执行失败T_T");
        }


    }
}

结果

标签:city,停留时间,String,Text,mapreduce,案例,job,new,import
From: https://www.cnblogs.com/w-ll/p/18534070

相关文章

  • CODESYS可视化桌面屏保-动态气泡制作详细案例
    #一个用于可视化(HMI)界面的动态屏保的详细制作案例程序#前言:在工控自动化设备上,为了防止由于人为误触发或操作引起的故障,通常在触摸屏(HMI)增加屏幕保护界面,然而随着PLC偏IT化的发展,在控制界面上的美观程度也逐渐向上位机或网页前端方面发展,本篇模仿Windows系统的屏幕保护背......
  • 鸿蒙开发案例:七巧板
     【1】引言(完整代码在最后面)本文介绍的拖动七巧板游戏是一个简单的益智游戏,用户可以通过拖动和旋转不同形状的七巧板块来完成拼图任务。整个游戏使用鸿蒙Next框架开发,利用其强大的UI构建能力和数据响应机制,实现了流畅的用户体验。【2】环境准备电脑系统:windows10开发工具:D......
  • 数智化实践案例 | 高质数据、领先平台、报告加速,赋能决策
    深圳华强集团有限公司自1979年创建以来,乘着改革开放的春风持续推进转型升级,逐步成长为一家以高科技产业为主导的多元化投资控股集团,产业涵盖文化科技、电子信息、产城融合、新能源和产业金融服务等领域。40多年来,华强集团始终把企业的发展愿景与国家崛起、民族复兴的宏伟蓝......
  • 数智化实践案例 | 数据赋能业务决策,探索消费品行业财务数智化转型
    爱慕股份是中国知名品牌企业,公司通过全渠道布局渗透细分市场以获取较好的市场份额。截至2020年12月31日,公司零售网络由2156个线下销售终端和以天猫、唯品会为主的线上渠道所组成,其中公司线下直营终端达1725个,2020年直营渠道贡献营收占比59.28%。公司的线下零售网点......
  • 【附行业案例】电子设备装配制造行业MES系统解决方案介绍
    一、行业背景与挑战随着数字化和智能化技术的飞速发展,电子设备制造行业正经历深刻的变革。作为高度精密的制造领域,电子设备的装配要求在生产精度、质量控制和工艺管理上具备更高标准,尤其是面对智能手机、平板电脑、笔记本电脑等3C电子产品的广泛需求,生产过程中的任何细微失误......
  • 8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
    当前,各企业正面临前所未有的数据增量,不仅体现在数据规模的急剧上升,还体现在数据的类型多样性和产生速度的加快。数据体量大固然蕴藏着更大的潜力及可能性,但如何有效利用这些数据,解决实际问题、赋能业务增长,才是各企业发展的关键。因此,企业亟需搭建高效的数据处理与分析平台,以帮......
  • javascript 替代try catch方案详细完整案例和优缺点
    1.OptionalChaining(可选链)案例:constuser={name:"Kimi",details:{age:30}};constage=user.details?.age;//如果user或details是null/undefined,返回undefined而不是抛出错误优点:预防运行时错误,特别是在访问可能为null或undefined的对象......
  • AI工具在论文关键词研究中的应用案例
    AI工具在关键词研究中的应用案例但在实际的学术写作中,如何有效地利用AI工具来加速关键词研究的过程、提高研究的精准度仍然是许多研究者面临的难题。本节将通过一个实际的案例,深入讲解如何运用AI工具来研究和优化论文关键词,从而帮助你高效、精确地把握论文的核心概念。案......
  • C#WinForm案例 无法拒绝的表白
     当用户鼠标移动到按钮上,如果移动到"是的"按钮,不做任务处理,如果移动到"不是”按钮,则把两个按钮的显示文本进行互换。当用户点击右上角“关闭“按钮的时候,提示“关闭窗口也改变不了你喜欢我的事实!",并且阻止窗体的关闭。当用户点击两个按钮中任意一个的时候,提示"就知道你喜......
  • 毕业设计【关注可白嫖源码】M博物馆文物信息管理(案例分析)
    摘 要   近年来,随着数字化信息技术的飞速发展,博物馆管理也逐渐走向信息化和智能化。本论文以M博物馆为研究对象,设计并实现了一套文物信息管理系统,旨在提升博物馆文物管理的效率和用户体验。    通过调研和需求分析,确定了系统的需求和功能模块。系统主要包括用......