当前位置: 首页 > 知识库问答 >
问题:

Hadoop:每个tar/zip文件对应一个映射器

裴哲
2023-03-14

我有几个目录要计算统计数据。i、 e my mapper函数将一个文件夹树作为输入,并根据目录及其所有子目录的内容输出一些静态数据。每个目录上的计算都需要很长时间。没有减速器。

我可以为我要处理的每个目录创建一个tar/zip文件并将其复制到HDFS中。但是如何确保为每个tar文件创建映射器并将tar文件的全部内容发送到该映射器(以便我可以遍历tar文件的内容并为该文件生成统计信息)?

如果可能的话,我更愿意在Hadoop流媒体中这样做。有可能做到这一点吗?

共有1个答案

薛望
2023-03-14

我想你在HDFS中有很多tar/zip文件作为map/reduce作业的输入?

在这种情况下,您必须实现自己的InputFormat来处理这些问题。输入格式实现(getSplits())决定了分割的数量,每个分割都有一个单独的映射器。因此,如果您只为每个输入文件返回一个分割,您就可以全部设置好了。

据我在文档中看到的,Hadoop流媒体中没有任何内容阻止您指定自己的InputFormat;但这需要编写一个Java类。(问题是inputformat和基于脚本的映射器应该如何交互:据我所知,Hadoop流媒体要求映射器通过stdin接收其输入,也就是说,您无法轻松地传递tar文件本身以供脚本操作。)

 类似资料:
  • 我是Hadoop的新手,但这是我上个月的一个学习项目。 为了使这一点足够模糊,以便对其他人有用,让我先抛出基本目标……假设: < li >显然,您有一个大型数据集,包含数百万个基本ASCII文本文件。 < ul > < li >每个文件都是一个“记录” e. g. /user/hduser/data/customer1/YYYY-MM-DD, /user/hduser/data/customer2

  • 问题内容: 我是Hadoop的新手,正在尝试弄清楚它是如何工作的。至于练习,我应该实现类似于WordCount- Example的东西。任务是读入多个文件,执行WordCount并为每个输入文件编写一个输出文件。Hadoop使用组合器,将map- part的输出改编为reducer的输入,然后写入一个输出文件(我猜每个正在运行的实例)。我想知道是否可以为每个输入文件写入一个输出文件(因此保留inp

  • 我有多个zip文件在一个文件夹和另一个zip文件存在于每一个这些zip文件夹。我想解压第一个和第二个zip文件夹,并创建它们自己的目录。 这是结构 如上所示,在中,我们有多个zip文件,在每个zip文件中,都存在另一个zip文件。我想解压缩,,和到新的文件夹中。我想使用与父zip文件夹相同的名称来放置每个结果。我尝试了以下答案,但这只解压缩第一个文件夹。 顺便说一句,我在Jenkins管道中运行这

  • 问题内容: 如果我选择一个zip文件,然后右键单击“在此处提取”,则会创建一个包含zip文件名的文件夹,并将zip文件的全部内容提取到其中。 但是,我想通过外壳转换几个zip文件。但是当我这样做 该文件夹未创建,但所有文件都提取到当前目录中。 我看过参数,但是没有这样的参数。我也试过 但是2. $ zipfile和4. $ zipfile 的扩展名必须使用sed删除。如果我做 它不起作用。 如何正

  • 我正在从mapper生成两个输出文件。我使用Multipleoutput api生成两个输出。我不确定这样做是否正确。这是我的代码。。请仔细检查一下,给我你的建议。。当我运行代码时,我得到了一个错误:java。lang.NullPointerException。。 这是日志... 错误:java。com上的lang.NullPointerException。尼尔森。grfe。Export\u Co

  • 我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。