草庐IT

RecordReader

全部标签

hadoop - hadoop RecordReader如何识别记录

在处理文本文件时,hadoop如何识别记录?它是基于换行符还是句号?如果我有一个包含5000个单词的文本文件列表,全部在一行中,以空格分隔;没有换行符、逗号或句号。RecordReader将如何表现?例如abcpqrxyzlmnqwerewpoiokjkhascdlkyg...... 最佳答案 您可以使用textinputformat.record.delimiter在配置中设置分隔符。如果未提供,它将回退到根据以下之一拆分行:'\n'(LF)、'\r'(CR)或'\r\n'(CR+LF)。因此,您的示例行将被读取为一条记录。您可以

hadoop - RecordReader如何向Hadoop中的mapper发送数据

我是Hadoop新手,目前正在学习DonaldMiner和AdamShookMapReduce设计模式一书中的mapreduce设计模式。所以在这本书中有笛卡尔积模式。我的问题是:记录读取器何时向映射器发送数据?将数据发送到映射器的代码在哪里?我看到的是CartesianRecordReader类中的下一个函数读取两个拆分而不发送数据。这是源代码https://github.com/adamjshook/mapreducepatterns/blob/master/MRDP/src/main/java/mrdp/ch5/CartesianProduct.java就这些了,先谢谢了:)

hadoop - 在 Hadoop MapReduce 中为二进制文件创建自定义 InputFormat 和 RecordReader

我正在编写一个M/R作业,它处理以二进制格式编写的大型时间序列数据文件,看起来像这样(此处换行是为了便于阅读,显然,实际数据是连续的):TIMESTAMP_1---------------------TIMESTAMP_1TIMESTAMP_2**********TIMESTAMP_2TIMESTAMP_3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%TIMESTAMP_3..etc其中timestamp只是一个8字节结构,可通过前2个字节识别。如上所示,实际数据位于重复值时间戳之间,并包含一个或多个预定义结构。我想编写一个自定义InputFormat,它将向映

hadoop - 从 RecordReader/InputFormat 访问作业的配置

我正在使用Hadoop,我必须创建自定义InputFormat。为此,我覆盖了InputFormat和RecordReader类,就像解释的那样here我想访问作业的配置(在运行作业之前访问一些变量集)。我可以访问“TaskAttemptContext”并从中获取配置对象,但这不是作业的全局配置。我不知道我想要的东西是否可行,但如果您有想法,那将非常有帮助。谢谢。 最佳答案 最后,TaskAttemptContext包含全局配置,我可能弄错了。因此,可以将变量从启动器main()传递到InputFormat。

java - 如何对自定义 RecordReader 和 InputFormat 类进行单元测试?

我开发了一个map-reduce程序。我编写了自定义RecordReader和InputFormat类。我正在使用MRUnit和Mockito对mapper和reducer进行单元测试。我想知道如何对自定义RecordReader和InputFormat类进行单元测试?测试这些类的最佳方式是什么? 最佳答案 感谢user7610来自answer的示例代码的编译和测试版本importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importor

hadoop - 使用自定义 RecordReader 在 Hadoop 中读取 gzip 文件

我正在编写MapReduce代码,其中我必须读取文件名作为键,文件内容作为其值。为此,我发布了thisquestiononStackOverflow.它适用于文本文件,但开始出现gzip文件问题。所以引用LineRecordReaderclass我在我的代码中做了一些修改。代码片段是:publicclassWholeFileRecordReaderextendsRecordReader{privateCompressionCodecFactorycompressionCodecs=null;privateFileSplitfileSplit;privateConfigurationco

hadoop - 覆盖 RecordReader 以立即读取段落而不是行

我重写了RecordReader类的“next”方法和TextInputFormat类的“getRecordReader”方法,以便将整个段落而不是逐行发送到映射器。(我正在使用旧的api,并且我的段落的定义是追加的,直到我的文本文件中出现一个空行。)下面是我的代码:publicclassNLinesInputFormatextendsTextInputFormat{@OverridepublicRecordReadergetRecordReader(InputSplitsplit,JobConfconf,Reporterreporter)throwsIOException{repor

java - 为什么 Apache Orc RecordReader.searchArgument() 没有正确过滤?

这是一个简单的程序:将记录写入Orc文件然后尝试使用谓词下推(searchArgument)读取文件问题:这是在Orc中使用谓词下推的正确方法吗?read(..)方法似乎返回了所有记录,完全忽略了searchArguments。这是为什么?注意事项:我无法找到任何有用的单元测试来演示谓词下推在Orc中的工作方式(OrconGitHub)。我也找不到关于此功能的任何明确文档。试着看Spark和Presto代码,但我找不到任何有用的东西。下面的代码是https://github.com/melanio/codecheese-blog-examples/tree/master/orc-exa

hadoop - RecordReader 在 Hadoop 中的工作

谁能解释一下RecordReader的实际工作原理?nextkeyvalue()、getCurrentkey()和getprogress()方法在程序开始执行后如何工作? 最佳答案 (新API):默认的Mapper类有一个运行方法,如下所示:publicvoidrun(Contextcontext)throwsIOException,InterruptedException{setup(context);while(context.nextKeyValue()){map(context.getCurrentKey(),context