Java执行hadoop的基本操作实例代码

发布时间 - 2026-01-11 00:49:10    点击率:

Java执行hadoop的基本操作实例代码

向HDFS上传本地文件

public static void uploadInputFile(String localFile) throws IOException{
    Configuration conf = new Configuration();
    String hdfsPath = "hdfs://localhost:9000/";
    String hdfsInput = "hdfs://localhost:9000/user/hadoop/input";
    FileSystem fs = FileSystem.get(URI.create(hdfsPath), conf);
    fs.copyFromLocalFile(new Path(localFile), new Path(hdfsInput));
    fs.close();
    System.out.println("已经上传文件到input文件夹啦");
  }

将output文件下载到本地

public static void getOutput(String outputfile) throws IOException{
    String remoteFile = "hdfs://localhost:9000/user/hadoop/output/part-r-00000";
    Path path = new Path(remoteFile);
    Configuration conf = new Configuration();
    String hdfsPath = "hdfs://localhost:9000/";
    FileSystem fs = FileSystem.get(URI.create(hdfsPath),conf);
    fs.copyToLocalFile(path, new Path(outputfile));
    System.out.println("已经将输出文件保留到本地文件");
    fs.close();
  }

删除hdfs中的文件

 public static void deleteOutput() throws IOException{
    Configuration conf = new Configuration();
    String hdfsOutput = "hdfs://localhost:9000/user/hadoop/output";
    String hdfsPath = "hdfs://localhost:9000/";
    Path path = new Path(hdfsOutput);
    FileSystem fs = FileSystem.get(URI.create(hdfsPath), conf);
    fs.deleteOnExit(path);
    fs.close();
    System.out.println("output文件已经删除");
  }

执行mapReduce程序

创建Mapper类和Reducer类

public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context) throws IOException, InterruptedException{
      String line = value.toString();
      line = line.replace("\\", "");
      String regex = "性别:</span><span class=\"pt_detail\">(.*?)</span>";
      Pattern pattern = Pattern.compile(regex);
      Matcher matcher = pattern.matcher(line);
      while(matcher.find()){
        String term = matcher.group(1);
        word.set(term);
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable>{

    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{
      int sum = 0;
      for(IntWritable val :values){
        sum+= val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

执行mapReduce程序

public static void runMapReduce(String[] args) throws Exception {
    Configuration conf = new Configuration();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if(otherArgs.length != 2){
      System.err.println("Usage: wordcount<in> <out>");
      System.exit(2);
    }
    Job job = new Job(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
    System.out.println("mapReduce 执行完毕!");
    System.exit(job.waitForCompletion(true)?0:1);

  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java执行hadoop  # Java执行hadoop操作  # java结合HADOOP集群文件上传下载  # Java访问Hadoop分布式文件系统HDFS的配置说明  # java使用hadoop实现关联商品统计  # 深入浅析Java Object Serialization与 Hadoop 序列化  # hadoop中实现java网络爬虫(示例讲解)  # Java/Web调用Hadoop进行MapReduce示例代码  # Hadoop运行时遇到java.io.FileNotFoundException错误的解决方法  # hadoop运行java程序(jar包)并运行时动态指定参数  # java实现对Hadoop的操作  # 利用Java连接Hadoop进行编程  # 希望能  # 谢谢大家  # 上传文件  # 上传  # part  # remoteFile  # outputfile  # path  # copyToLocalFile  # getOutput  # System  # close 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  javascript读取文本节点方法小结  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  如何用西部建站助手快速创建专业网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何在阿里云域名上完成建站全流程?  javascript中的try catch异常捕获机制用法分析  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  javascript日期怎么处理_如何格式化输出  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在局域网内绑定自建网站域名?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  HTML 中动态设置元素 name 属性的正确语法详解  如何快速启动建站代理加盟业务?  如何在宝塔面板中创建新站点?  JavaScript如何实现音频处理_Web Audio API如何工作?  图册素材网站设计制作软件,图册的导出方式有几种?  浅谈redis在项目中的应用  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  PythonWeb开发入门教程_Flask快速构建Web应用  太平洋网站制作公司,网络用语太平洋是什么意思?  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel如何自定义分页视图?(Pagination示例)  Android Socket接口实现即时通讯实例代码  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何快速搭建高效可靠的建站解决方案?