elastic-mapreduce-cli
全部标签 我打算用map/reduce合并一些在同一个目录下的小文件。我看到有人说使用streaming会很简单,但现在我只能使用JAVAmap/reduce。现在我的解决方案是一条一条记录读取文件并将它们写入同一个输出文件。但我认为它效率低下。我可以使用整个文件的内容作为映射器的值来提高I/O效率吗?感谢您的回复! 最佳答案 执行此操作的“低效”方法是只对文件进行分类并将其写回:hadoopfs-cat/path/to/files/*.txt|hadoopfs-put-/output/path/blobbed.txt您可能会发现这适用于更大
我正在hadoop集群上构建一个示例Map/Reduce任务,该集群包含两个节点——主/从节点和从节点。以下是我的规范:$HADOOP_HOME=/usr/local/hadoopMyM/Rclassfilespath=$HADOOP_HOME/MyMapRed_classesMyMapperclassfile=$HADOOP_HOME/MyMapRed_classes/MyMapperMyReducerclassfile=$HADOOP_HOME/MyMapRed_classes/MyReducerMyJarpath=$HADOOP_HOME/MyMapred/MyMapRed.ja
我有以下问题:我有很多键值对形式的数据。关键是一些id和值-一些文本。我的目标是将这些对象分组到文本片段以某种方式“相似”的集群中。所以它看起来像是MapReduce的任务,如果将我的文本片段作为键,并将id作为值。但是这样的键不是MapReduce使用的传统方式,并且由于我并不真正了解MapReduces框架的内部实现,所以我不确定这种方式是否有效。所以我的详细想法是:1.在Java中使用一些MapReduce(Hadoop、GridGain)2.为我的文本片段创建特殊类(比如TextKey)3.覆盖类的equals(),在这里打包文本比较逻辑(比如levenstein距离比较,或其
这个问题是关于Map/Reduce排序的。我有三个字段XXID,Identifier,TimeStampXXID可以是任意字符串值,标识符有两个可能的值1或2我希望排序是这样的,即所有相同的XXID都进入同一个reducer,并且在可迭代中,带有1的字段首先出现在可迭代中,随着时间戳的增加,带有2的字段紧随其后。谁能帮我解决这个问题? 最佳答案 你这样做肯定违反了mapreduce框架,但你必须做你必须做的事!首先,排序只对键进行。因此,您必须假设这些值将以任意顺序排列。因此,我们需要弄清楚如何获取key中的XXID、标识符和时间戳
在很多情况下,我正在编写数据处理程序,并且只有在较大的数据集上才会发现新错误。例如,考虑一个脚本在1亿条记录中有1条崩溃(由于意外输入或其他原因);如果我在一小部分数据样本上开发它,我就不会看到那个错误。我所能做的就是盯着Hadoop的错误日志,调整脚本,然后重新运行整个作业。这在计算和开发时间方面都非常低效。我想要的是一种下载脚本崩溃时正在处理的数据段的方法。有没有一种简单的方法可以将其从Hadoop中移除?(理想情况下,HadoopStreaming?)几年前,我学到了一些可怕的技巧,通过挖掘Hadoop本身创建的临时目录...虽然这似乎不是一个好的解决方案,但我希望现在有更好的东
我有一个代码可以从FTP服务器读取文件并将其写入HDFS。我已经实现了一个自定义的InputFormatReader,它将输入的isSplitable属性设置为false。但是这给了我以下错误。INFOmapred.MapTask:Recordtoolargeforin-memorybuffer我用来读取数据的代码是Pathfile=fileSplit.getPath();FileSystemfs=file.getFileSystem(conf);FSDataInputStreamin=null;try{in=fs.open(file);IOUtils.readFully(in,con
我有一个设计问题,在我的CDH4.1.2(Cloudera)安装中,我将每日滚动日志数据转储到HDFS中。我有一些报告来计算每天的成功率和失败率。我有两种方法将每日日志数据加载到Hive表中并创建一个复杂的查询。每天预先运行MapReduce作业以生成摘要(本质上是几行)并继续附加到一个Hive表的公共(public)文件。稍后在运行报告时,我可以使用一个简单的选择查询来获取摘要。我正在尝试了解两者中哪种方法更好,或者是否有更好的方法。第二种方法在合并文件方面增加了一些复杂性。如果不合并,我会有很多非常小的文件,这似乎是个坏主意。感谢您的意见。谢谢 最佳答案
我想知道是否可以定义一个分层MapReduce作业?。换句话说,我想要一个map-reduce作业,在mapper阶段将调用不同的MapReduce作业。可能吗?您对如何操作有什么建议吗?我想这样做是为了在我的程序中有更高级别的并行/分布。谢谢,阿里克。 最佳答案 Hadoopdefinitiveguidebook包含许多与MapReduce作业链相关的食谱,包括示例代码和详细说明。特别是名为“高级API用法”或类似内容的章节。我个人成功地用几个HBase表替换了复杂的map-reduce作业,这些表用作带有手工制作的TableIn
我试图运行WordCount示例的变体,变体是,Mapper输出Text作为键和Text作为值,reducer输出Text作为键和NullWritable作为值。除了map,reducesignatures,我把主要的方法是这样的://startaconfConfigurationconf=newConfiguration();conf.set("str",str);//initializeajobbasedontheconfJobjob=newJob(conf,"wordcount");job.setJarByClass(org.myorg.WordCount.class);//th
下面有一个map-reduce程序计算几个文本文件的单词。我的目标是使结果按出现次数降序排列。不幸的是,程序按字典顺序对输出进行排序。我想要整数值的自然顺序。所以我使用job.setSortComparatorClass(IntComparator.class)添加了一个自定义比较器。但这并不像预期的那样工作。我收到以下异常:java.lang.Exception:java.nio.BufferUnderflowExceptionatorg.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:404)Cause