【国徽大学源码】【网盘上传源码】【黑色博客首页源码】hadoop example 源码

时间:2024-12-22 22:38:17 来源:mapperscan 解析源码 编辑:在线渲染网站源码

1.Hadoop学习之fileSystem.delete方法
2.如何在MaxCompute上运行HadoopMR作业

hadoop example 源码

Hadoop学习之fileSystem.delete方法

       Hadoop中FileSystem.delete方法用于删除文件或目录。该方法接受两个参数:一个Path,代表要删除的路径;一个布尔值,表示是否进行递归删除。

       在源码中,国徽大学源码该方法的网盘上传源码实现逻辑如下。当指定删除的目标路径为文件时,无论参数recursive为true还是false,方法都能正常执行。而当目标路径为目录时,情况则有所不同。若参数recursive为true,则会递归地删除目录内的黑色博客首页源码所有子文件和子目录,直至目录被空目录所替代,最终被删除。若参数recursive为false,则仅删除空目录,openssh源码升级安装若目录内有文件或子目录,将抛出异常。因此,在使用此方法时,芸众系统源码需根据实际情况合理设置参数,避免误删重要文件或目录。

       举例说明,若要删除名为"example.txt"的文件,可以这样调用方法:FileSystem.delete(new Path("/path/to/example.txt"), false)。若要删除名为"example"的目录及其内容,调用方法时需设置recursive为true,如:FileSystem.delete(new Path("/path/to/example"), true)。

       总结而言,FileSystem.delete方法提供了删除文件或目录的便利功能,通过合理设置参数,可灵活实现不同场景下的删除需求。在实际应用中,需根据目标路径的性质和预期结果,正确使用此方法,以避免不必要的数据丢失或系统异常。

如何在MaxCompute上运行HadoopMR作业

       MaxCompute(原ODPS)有一套自己的MapReduce编程模型和接口,简单说来,这套接口的输入输出都是MaxCompute中的Table,处理的数据是以Record为组织形式的,它可以很好地描述Table中的数据处理过程,然而与社区的Hadoop相比,编程接口差异较大。Hadoop用户如果要将原来的Hadoop MR作业迁移到MaxCompute的MR执行,需要重写MR的代码,使用MaxCompute的接口进行编译和调试,运行正常后再打成一个Jar包才能放到MaxCompute的平台来运行。这个过程十分繁琐,需要耗费很多的开发和测试人力。如果能够完全不改或者少量地修改原来的Hadoop MR代码就能在MaxCompute平台上跑起来,将是一个比较理想的方式。

       çŽ°åœ¨MaxCompute平台提供了一个HadoopMR到MaxCompute MR的适配工具,已经在一定程度上实现了Hadoop MR作业的二进制级别的兼容,即用户可以在不改代码的情况下通过指定一些配置,就能将原来在Hadoop上运行的MR jar包拿过来直接跑在MaxCompute上。目前该插件处于测试阶段,暂时还不能支持用户自定义comparator和自定义key类型,下面将以WordCount程序为例,介绍一下这个插件的基本使用方式。

       ä½¿ç”¨è¯¥æ’件在MaxCompute平台跑一个HadoopMR作业的基本步骤如下:

       1. 下载HadoopMR的插件

       ä¸‹è½½æ’件,包名为hadoop2openmr-1.0.jar,注意,这个jar里面已经包含hadoop-2.7.2版本的相关依赖,在作业的jar包中请不要携带hadoop的依赖,避免版本冲突。

       2. 准备好HadoopMR的程序jar包

       ç¼–译导出WordCount的jar包:wordcount_test.jar ,wordcount程序的源码如下:

       package com.aliyun.odps.mapred.example.hadoop;

       import org.apache.hadoop.conf.Configuration;

       import org.apache.hadoop.fs.Path;

       import org.apache.hadoop.io.IntWritable;

       import org.apache.hadoop.io.Text;

       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;

       import java.util.StringTokenizer;

       public class WordCount {

       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 {

       StringTokenizer itr = new StringTokenizer(value.toString());

       while (itr.hasMoreTokens()) {

       word.set(itr.nextToken());

       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);

       }

       }

       public static void main(String[] args) throws Exception {

       Configuration conf = new Configuration();

       Job job = Job.getInstance(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(args[0]));

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

       System.exit(job.waitForCompletion(true) ? 0 : 1);

       }

       }

       3. 测试数据准备

       åˆ›å»ºè¾“入表和输出表

       create table if not exists wc_in(line string);

       create table if not exists wc_out(key string, cnt bigint);

       é€šè¿‡tunnel将数据导入输入表中

       å¾…导入文本文件data.txt的数据内容如下:

       hello maxcompute

       hello mapreduce

       ä¾‹å¦‚可以通过如下命令将data.txt的数据导入wc_in中,

       tunnel upload data.txt wc_in;

       4. 准备好表与hdfs文件路径的映射关系配置

       é…ç½®æ–‡ä»¶å‘½åä¸ºï¼šwordcount-table-res.conf

       {

       "file:/foo": {

       "resolver": {

       "resolver": "c.TextFileResolver",

       "properties": {

       "text.resolver.columns.combine.enable": "true",

       "text.resolver.seperator": "\t"

       }

       },

       "tableInfos": [

       {

       "tblName": "wc_in",

       "partSpec": { },

       "label": "__default__"

       }

       ],

       "matchMode": "exact"

       },

       "file:/bar": {

       "resolver": {

       "resolver": "openmr.resolver.BinaryFileResolver",

       "properties": {

       "binary.resolver.input.key.class" : "org.apache.hadoop.io.Text",

       "binary.resolver.input.value.class" : "org.apache.hadoop.io.LongWritable"

       }

       },

       "tableInfos": [

       {

       "tblName": "wc_out",

       "partSpec": { },

       "label": "__default__"

       }

       ],

       "matchMode": "fuzzy"

       }

       }

copyright © 2016 powered by 皮皮网   sitemap