问题标签 [recordreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
235 浏览

hadoop - Hadoop RawLocalFileSystem 和 getPos

我发现 RawLocalFileSystem 的输入流中的 getPos 可以在其底层流关闭时抛出空指针异常。

我在玩自定义记录阅读器时发现了这一点。

为了修补它,我只需检查对“stream.available()”的调用是否引发异常,如果是,我在 getPos() 函数中返回 0。

现有的 getPos() 实现在这里找到:

https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20/src/examples/org/apache/hadoop/examples/MultiFileWordCount.java

RecordReader 中 getPos() 的正确行为应该是什么?

0 投票
4 回答
2137 浏览

hadoop - mapreduce成功后如何删除输入文件

我们有一个系统,它接收指定目录上的档案,并定期启动一个 mapreduce 作业,该作业打开档案并处理其中的文件。为了避免下次重新处理相同的档案,我们在 RecordReader 上使用 close() 方法,以便在读取最后一个条目后将其删除。

这种方法的问题(我们认为)是,如果一个特定的映射失败,下一个对其进行另一次尝试的映射器会发现原始文件已被记录读取器从第一个文件中删除,并且它会被炸毁。我们认为要走的路是等到所有映射和归约完成,然后删除输入档案。

这是最好的方法吗?

如果是这样,我们如何从主程序中获取系统找到的所有输入文件的列表?(我们不能只清理整个输入目录,可能存在新文件)

IE:

0 投票
0 回答
79 浏览

hadoop - 地图减少作业中的拆分

我有一个输入文件,我需要在其上自定义RecordReader. 但是,这里的问题是,数据可能会分布在不同的输入拆分中,并且不同的映射器可能会获得应该由第一个映射器使用的数据。

例如
ABCD
$ EF

开头的“$”表示它是上一行的延续。

考虑到,第二次拆分从 $ 开始。现在,我的第一个映射器不会知道第一行的延续。另请注意,我的数据中很可能根本没有任何第二行。所以,直到或除非我读到第二行,我才能知道我的数据有什么延续。

请帮我找到解决这个问题的方法。

0 投票
0 回答
233 浏览

java - 自定义二进制格式的自定义记录阅读器

在 Hadoop v2 中,我需要基于存储在 HDFS 中的一些大型二进制格式创建一个RecordReader和/或一个。InputFormat这些文件基本上是具有以下结构的串联记录:

要知道所有的边界点,我需要扫描整个文件。

是否有任何自定义阅读器/格式的示例可以解决这样的结构?

我希望避免提前预先计算所有分割点,我宁愿在每个记录中流式传输,因为映射器需要它,这样我就不必浪费数据循环。但即使我必须预先计算分割点,我也不知道如何编写自定义分割器,所以如果可能的话,我也会很感激指向类似东西的指针。

需要注意的一点:每条记录的“有效负载”本质上是任意二进制数据,"FOOO"据我所知,其中可能包含 4 字节常量。因此,如果输入拆分位于记录中间的某个位置,我不一定只能前进到下一个实例"FOOO"来查找下一条记录,这也不是管理记录查找的有效方法,因为这意味着扫描所有数据而不仅仅是标题并寻找必要的位置。

0 投票
2 回答
672 浏览

java - 未调用自定义 RecordReader 初始化

我最近开始搞乱 Hadoop,刚刚创建了自己的输入格式来处理 pdf。

出于某种原因,我的自定义 RecordReader 类没有调用它的初始化方法。(用sysout检查过,因为我还没有设置调试环境)

我在 Windows 7 32 位上运行 hadoop 2.2.0。用 yarn jar 打电话,因为 hadoop jar 在 windows 下被窃听...

0 投票
1 回答
701 浏览

hadoop - Hadoop - 从记录读取器到映射函数的多个文件

我已经实现了一个自定义的组合文件输入格式,以便为由一组文件组成的 Map 任务创建拆分。我创建了一个解决方案,通过记录阅读器传递拆分的每个文件,一切都很好。现在我试图将整个文件集传递给 map 函数。

这是我的记录阅读器代码:

使用此代码,map 函数会正确接收键和值的向量,但会重复。我的意思是,我希望 map 函数被调用一次,而不是被多次调用。我究竟做错了什么?

0 投票
1 回答
739 浏览

testing - Hadoop Map reduce 测试 - 自定义记录阅读器

我编写了一个自定义记录阅读器并寻找示例测试代码来使用 MRUnit 或任何其他测试框架测试我的自定义阅读器。它根据功能工作正常,但我想在安装之前添加测试用例。任何帮助都是不言而喻的。

0 投票
0 回答
1592 浏览

java - 来自 Hadoop 中 inputStream 的过早 EOF

我想逐块(不是逐行)读取 Hadoop 中的大文件,其中每个块的大小接近 5 MB。为此,我编写了一个自定义recordreader. 但它给了我一个错误Premature EOF from inputStream,这是由 , 引起的nextKeyValue()readfully()而阅读。

这是我的代码:

0 投票
0 回答
846 浏览

apache - Hadoop Record Reader 仅读取第一行然后输入流似乎已关闭

我正在尝试实现一个 hadoop 作业,它计算对象(单击)在数据集中出现的频率。因此我写了一个自定义文件输入格式。记录阅读器似乎只读取给定文件的第一行并关闭输入流。

这是代码:

Pojo 类:

这是 FileInputFormat 类:

映射器类:

分区器类:

Hadoop 作业,它是通过 servlet 容器中的 Restful Web 服务调用触发的,但这不应该是问题:

接下来是数据集(示例):

当我运行程序时,syso 显示如下:

由此我得出结论,记录阅读器只阅读第一行。为什么会发生这种情况以及如何解决?

0 投票
1 回答
3237 浏览

java - mapreduce.TextInputFormat hadoop

我是一个hadoop初学者。我遇到了这个自定义的 RecordReader 程序,它一次读取 3 行并输出将 3 行输入提供给映射器的次数。

我能够理解为什么使用 RecordReader,但是当输入格式类本质上扩展 mapreduce.TextInputFormat 类时,我无法看到每个 InputSplit 如何包含 3 行。根据我的理解,TextInputFormat 类为每一行(对于每个 \n)发出 1 个 InputSplit。

那么 RecordReader 是如何从每个 InputSplit 中读取 3 行的呢?请有人解释这是怎么可能的。提前致谢!