首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何再次覆盖/重用Hadoop作业的现有输出路径和agian

在 Hadoop 中,覆盖现有输出路径和重用输出路径的方法如下:

  1. 使用 FileSystem 类来删除现有输出路径

在运行 Hadoop 作业之前,可以使用 FileSystem 类来删除现有输出路径。以下是一个示例代码:

代码语言:java
复制
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HadoopJob {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(conf);
        Path outputPath = new Path("hdfs://localhost:9000/output");
        if (fs.exists(outputPath)) {
            fs.delete(outputPath, true);
        }
        // 在这里运行 Hadoop 作业
    }
}
  1. 使用 -D 参数覆盖输出路径

在运行 Hadoop 作业时,可以使用 -D 参数来覆盖现有输出路径。以下是一个示例命令:

代码语言:txt
复制
hadoop jar hadoop-job.jar -D mapreduce.output.fileoutputformat.outputdir=hdfs://localhost:9000/output
  1. 使用 FileOutputFormat 类来设置输出路径

在 Hadoop 作业中,可以使用 FileOutputFormat 类来设置输出路径。以下是一个示例代码:

代码语言:java
复制
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class HadoopJob {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "Hadoop Job");
        job.setJarByClass(HadoopJob.class);
        job.setMapperClass(MyMapper.class);
        job.setReducerClass(MyReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/input"));
        FileOutputFormat.setOutputPath(job, new Path("hdfs://localhost:9000/output"));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

在这个示例中,我们使用 FileOutputFormat.setOutputPath() 方法来设置输出路径。

  1. 使用 Path 类来检查输出路径是否存在

在 Hadoop 作业中,可以使用 Path 类来检查输出路径是否存在。以下是一个示例代码:

代码语言:java
复制
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class HadoopJob {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "Hadoop Job");
        job.setJarByClass(HadoopJob.class);
        job.setMapperClass(MyMapper.class);
        job.setReducerClass(MyReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/input"));
        Path outputPath = new Path("hdfs://localhost:9000/output");
        FileSystem fs = outputPath.getFileSystem(conf);
        if (fs.exists(outputPath)) {
            fs.delete(outputPath, true);
        }
        FileOutputFormat.setOutputPath(job, outputPath);
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

在这个示例中,我们使用 Path 类来检查输出路径是否存在,并在存在时删除它。

总之,在 Hadoop 中覆盖现有输出路径和重用输出路径的方法有很多种。你可以根据自己的需求选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

大数据入门与实战-Spark上手

1.5 Spark建立在Hadoop上 下图显示了如何使用Hadoop组件构建Spark的三种方法。 ? Spark部署有三种方式,如下所述。...在这里,Spark和MapReduce将并排运行,以涵盖集群上的所有火花作业。...不幸的是,在大多数当前框架中,在计算之间重用数据的唯一方法(Ex-两个MapReduce作业之间)是将其写入外部稳定存储系统(Ex-HDFS)。...关于存储系统,大多数Hadoop应用程序,他们花费超过90%的时间进行HDFS读写操作。 2. 3 MapReduce上的迭代操作 在多阶段应用程序中跨多个计算重用中间结果。...saveAsTextFile(“”)方法的String参数是输出文件夹的绝对路径。请尝试以下命令将输出保存在文本文件中。在以下示例中,'output'文件夹位于当前位置。 5.8 查看输出 ?

1.1K20
  • Apache Spark:大数据时代的终极解决方案

    在Hadoop中,数据存储在磁盘上,而在Spark中则存储在内存中,这可以极大地降低IO成本。Hadoop的MapReduce只能通过将数据写入外部存储并在需要时再次通过IO获取数据来重用数据。...迭代型和交互式作业需要快速响应,但由于数据的复制、磁盘IO和序列化,MapReduce的性能并不令人满意。...它还可以支持现有的纯Hadoop生态系统。 MapReduce的替代方法: Spark可以用来代替MapReduce,因为它可以在短时间内执行作业,而且只需5秒或更短的时间。...双操作系统也是非常好的选择。可以选择使用独立版本或使用为Hadoop预先构建的版本,该版本利用现有的Hadoop组件(如HDFS)或构建在YARN上的版本。...下面将演示如何执行现有程序,如何启动客户端、服务器以及如何启动Spark Shell。

    1.8K30

    Sqoop工具模块之sqoop-export 原

    --hadoop-mapred-home :指定$ HADOOP_MAPRED_HOME路径 --help:打印使用说明 --password-file:为包含认证密码的文件设置路径。...如果有多个列,请使用以逗号分隔的列列表。 --update-mode :指定在数据库中使用不匹配的键找到新行时如何执行更新。...如果这些文件是使用非默认分隔符(以换行符分隔的记录的逗号分隔字段)创建的,则应该再次指定相同的分隔符,以便Sqoop可以解析您的文件。...6、代码生成参数 --bindir :编译对象的输出目录。 --class-name :设置生成的类名称。这覆盖--package-name。...在这种情况下指定--jar-file和--class-name避免指定分隔符。 现有生成的代码的使用与--update-key是不兼容的;更新模式导出需要新的代码生成来执行更新。

    7K30

    如何复制 OR 删除 200 万个小文件,而且电脑不卡?

    /256 :: 关闭超长路径(> 256 字符)支持。 /MON:n :: 监视源;发现多于 n 个更改时再次运行。 /MOT:m :: 监视源;如果更改,在 m 分钟时间内再次运行。.../NP :: 无进度 - 不显示已复制的百分比。 /ETA :: 显示复制文件的预期到达时间。 /LOG:文件:: 将状态输出到日志文件(覆盖现有日志)。.../LOG+:文件:: 将状态输出到日志文件(附加到现有日志中)。 /UNILOG:文件:: 以 UNICODE 方式将状态输出到日志文件(覆盖现有日志)。.../UNILOG+:文件:: 以 UNICODE 方式将状态输出到日志文件(附加到现有日志中)。 /TEE :: 输出到控制台窗口和日志文件。 /NJH :: 没有作业标头。.../NJS :: 没有作业摘要。 /UNICODE :: 以 UNICODE 方式输出状态。 五、 作业选项 : 参数解释: /JOB:作业名称:: 从命名的作业文件中提取参数。

    3.1K51

    Hadoop

    (2)全排序:     如何用Hadoop产生一个全局排序的文件?最简单的方法是使用一个分区。...现有的Hadoop调度器存在较大缺陷,主要体现在探测落后任务的算法上:如果一个task的进度落后于同类型task进度的20%,则把该task当做落后任务(这种任务决定了job的完成时间,需尽量缩短它的执行时间...实际上,这类调度器分为两种,软实时(允许作业有一定的超时)作业调度器和硬实时(作业必须严格按时完成)作业调度器。   ...数据大小倾斜——部分记录的大小远远大于平均值。 (2)如何收集倾斜数据   在reduce方法中加入记录map输出键的详细情况的功能。...JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置。

    29310

    Hadoop3.0集群安装知识

    问题导读 1.本文是如何定义master的? 2.如何配置hadoop守护进程环境? 3.配置Hadoop守护进程需要哪些配置文件? 4.yarn-site配置文件,主要配置哪两个进程?...目的 本文档介绍如何安装和配置Hadoop集群,从少数节点到数千个节点的超大型集群。...其他服务(如Web应用程序代理服务器和MapReduce作业历史记录服务器)通常在专用硬件或共享基础结构上运行,具体取决于负载。...RM提交作业 如果设置host:port ,会覆盖在yarn.resourcemanager.hostname中设置的hostname yarn.resourcemanager.scheduler.address...节点的运行状况和脚本的输出(如果运行状况不佳)可供管理员在ResourceManager Web界面中使用。节点健康以来的时间也显示在Web界面上。

    1.3K70

    内存中的 MapReduce 和 Hadoop 生态系统:第 1 章

    限制 Hadoop 和 MapReduce 性能扩展的主要因素之一是 Hadoop 依赖生成大量输入 / 输出(I/O)文件的文件系统。I/O 操作会增加延迟,并延迟 MapReduce 的计算。...Hadoop 的这一即插即用的内存加速器有三种类型。 1. 内存中的 MapReduce 它是 Hadoop 的作业和任务跟踪器的一个替代方案,可以加快作业执行的性能。...它消除了标准 Hadoop 体系结构中与作业和任务跟踪器相关的开销,同时能提供低延迟的 HPC 式分布式处理功能。 2....它减少了 Hadoop 作业和任务跟踪器的启动和执行的时间,还为 CPU 密集型任务提供了显着的性能提升,同时只需对现有应用程序进行最小限度的更改。...Hadoop "伪分布式集群" 意味着 Hadoop 的数据节点,名称节点,任务和作业跟踪器 —— 一切都只会运行在一台虚拟(主机)机器上。

    1.6K60

    Hadoop3.0分布式集群安装知识

    问题导读 1.本文是如何定义master的? 2.如何配置hadoop守护进程环境? 3.配置Hadoop守护进程需要哪些配置文件? 4.yarn-site配置文件,主要配置哪两个进程?...目的 本文档介绍如何安装和配置Hadoop集群,从少数节点到数千个节点的超大型集群。...其他服务(如Web应用程序代理服务器和MapReduce作业历史记录服务器)通常在专用硬件或共享基础结构上运行,具体取决于负载。...RM提交作业 如果设置host:port  ,会覆盖在yarn.resourcemanager.hostname中设置的hostname yarn.resourcemanager.scheduler.address...节点的运行状况和脚本的输出(如果运行状况不佳)可供管理员在ResourceManager Web界面中使用。节点健康以来的时间也显示在Web界面上。

    2K50

    Sqoop工具模块之sqoop-import-all-tables

    --hadoop-mapred-home :覆盖$ HADOOP_MAPRED_HOME。 --help:打印使用说明。 --password-file:为包含认证密码的文件设置路径。...--hive-overwrite:覆盖Hive表中的现有数据。。 --create-hive-table:如果设置,则作业将失败,如果目标配置单元表存在。默认情况下,该属性为false。...--hive-partition-key:分区的配置单元字段的名称被打开 --hive-partition-value :字符串值,用作此作业中导入配置单元的分区键。...--map-column-hive :覆盖从SQL类型到配置列的Hive类型的默认映射。...如果在此参数中指定逗号,请使用URL编码的键和值,例如,使用DECIMAL(1%2C%201)而不是DECIMAL(1,1)。 6、代码生成参数 --bindir :编译对象的输出目录。

    1.5K30

    HBase使用HashTableSyncTable工具同步集群数据

    下面显示了如何运行它的快速示例,本文稍后将给出每个必需参数的详细说明: hbase org.apache.hadoop.hbase.mapreduce.HashTable --families=cf...HashTable充当分片/索引工作,分析表数据的批处理,并为每个批处理生成哈希索引。这些是作为作业参数之一传递的hdfs 的/hashes/my-table目录下文件中写入的输出。...它还将仅需要在源中扫描少量的单元以检查不匹配。 必要参数 HashTable仅需要两个参数:表名称和将在其中写入相关哈希和其他元信息文件的输出路径。...SyncTable使用HashTable输出目录作为输入,并分别使用源集群和目标集群中的表名称。...SyncTable毫无区别地查找源分区和目标分区之间的所有哈希匹配,因此避免了再次扫描远程源集群的需要。

    1.7K10

    Hadoop-2.4.1学习之Mapper和Reducer

    程序员编写的运行在MapReduce上的应用程序称为作业(job),Hadoop既支持用Java编写的job,也支持其它语言编写的作业,比如Hadoop Streaming(shell、python)和...Hadoop-2.X不再保留Hadoop-1.X版本中的JobTracker和TaskTracker组件,但这并不意味着Hadoop-2.X不再支持MapReduce作业,相反Hadoop-2.X通过唯一的主...作业客户端将编写好的作业提交给ResourceManager,而不再是JobTracker,ResourceManager负责将作业分布到从节点上,调度和监控作业,为作业客户端提供状态和诊断信息。...默认为1,会启动一个Reducer),在这种情况下,Mapper的输出将直接写入FileOutputFormat.setOutputPath(Job,Path)指定的路径中,并且MapReduce框架不会对...也就是Job.setGroupingComparatorClass(Class)控制了如何对中间输出分组,而Job.setSortComparatorClass(Class)控制了在将数据传入reduce

    73120

    【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

    在本文中,我们将演示如何使用Ambari来部署和管理一个Hadoop集群,并运行一个简单的MapReduce应用程序。...0 : 1)); } } 在驱动程序中,我们首先创建一个作业对象,并设置作业的名称、Mapper类、Reducer类、输入路径和输出路径等。...上传完成后,我们需要在Ambari中创建一个新的MapReduce作业,将JAR文件和输入输出路径与作业关联。...在“参数”选项卡中,输入作业的输入路径和输出路径。 单击“保存”按钮,然后单击“提交”按钮。 创建作业后,我们可以在“作业浏览器”中查看作业的状态和运行情况。...如果作业运行成功,我们可以在输出路径中找到生成的结果文件。 总结 本文介绍了如何使用Ambari来管理和监控Hadoop集群,并演示了如何编写和部署一个简单的MapReduce应用程序。

    41220

    Hadoop学习笔记—4.初识MapReduce

    框架会对Map的输出先进行排序,然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中,整个框架负责任务的调度和监控,以及重新执行已经关闭的任务。   ...>键值对作为作业的输出,这两组键值对有可能是不同的。   ...一个MapReduce作业的输入和输出类型如下图所示:可以看出在整个流程中,会有三组键值对类型的存在。 ?...我们要做的就是覆盖map 函数和reduce 函数,首先我们来覆盖map函数:继承Mapper类并重写map方法 /** * @author Edison Chou * @version...、value类型(这里输入的key、value类型通常和map的输出key、value类型保持一致)和输出的key、value 类型。

    46120

    动态 | 中科院计算所开源Easy Machine Learning系统,用交互式图形界面简化ML开发过程

    不过,机器学习的全部潜能还远远没被开发出来,因为使用机器学习算法很困难,尤其是在像Hadoop和Spark的分布式平台。...大数据基础结构 该系统是建立在开源大数据系统Hadoop和Spark之上的。...该系统还提供了一些数据和任务,用于演示如何使用这些算法来解决问题。为了构造机器学习任务,用户可以直接使用系统中的算法和数据。他们还可以上传自己的数据和算法包。...4)任务重用 现有任务不仅可以作为设计新任务的模板,而且可以重用,以节省执行时间和系统资源。用户可以直接修改完成的任务(例如,修改参数的节点,添加节点和边,或删除节点和边等)并重新提交任务。...在新提交的任务,只有受影响的节点会再次执行而未受影响的节点输出的结果将直接重复使用。为了解决实际任务,用户通常需要反复调整任务的数据流DAG和算法的参数。

    90380

    {Submarine} 在 Apache Hadoop 中运行深度学习框架

    最重要的是我们的有一套集成Submarine的生态系统软件和工具,目前包括: Submarine-Zeppelin integration:允许数据科学家在 Zeppelin 的notebook中编写算法和调参进行可视化输出...SUBMARINE 生态 Hadoop Submarine 项目的目标是提供深度学习场景中的数据(数据采集,数据处理,数据清理),算法(交互式,可视化编程和调优),资源调度,算法模型发布和作业调度的全流程服务支持...通过与 Zeppelin 结合,很明显可以解决数据和算法问题。Hadoop Submarine 还将解决 Azkaban 的作业调度问题。...利用率低 无法重用现有的YARN群集资源。...无法集成现有的大数据处理系统(例如:spark,hive等) 维护成本高(需要管理分离的集群) 需要同时运维 Hadoop 和 Kubernetes 两套操作环境,增加维护成本和学习成本。

    1.7K10

    Apache Hudi 架构原理与最佳实践

    读优化表的主要目的是通过列式存储提供查询性能,而近实时表则提供实时(基于行的存储和列式存储的组合)查询。 Hudi是一个开源Spark库,用于在Hadoop上执行诸如更新,插入和删除之类的操作。...它还允许用户仅摄取更改的数据,从而提高查询效率。它可以像任何作业一样进一步水平扩展,并将数据集直接存储在HDFS上。 2. Hudi如何工作?...Hudi将数据集组织到与Hive表非常相似的基本路径下的目录结构中。数据集分为多个分区,文件夹包含该分区的文件。每个分区均由相对于基本路径的分区路径唯一标识。 分区记录会被分配到多个文件。...Hudi解决了以下限制 HDFS的可伸缩性限制 需要在Hadoop中更快地呈现数据 没有直接支持对现有数据的更新和删除 快速的ETL和建模 要检索所有更新的记录,无论这些更新是添加到最近日期分区的新记录还是对旧数据的更新...Hadoop中数据的快速呈现 支持对于现有数据的更新和删除 快速的ETL和建模 7.

    5.5K31
    领券