草庐IT

input_text_area

全部标签

hadoop - 哪种 Hadoop 数据类型最适合表示年份的键 - Text 还是 IntWritable?

在我的应用程序中,我需要使用年份作为键值。我认为Text更适合key,因为我们通常按年份对特定度量进行分组,而IntWritable用于我们求和或平均的值。但我也认为我们可以使用IntWritable作为年份的类型,因为我们可以将年份表示为int,没有什么可以阻止它,对吗?我想了解哪个更适合一年作为关键-是Text还是IntWritable? 最佳答案 两者都适用,但在效率方面存在重要差异。首先,如果您的记录数量“较少”,那么我将要讨论的内容可能微不足道,不值得担心。但是,如果您计划处理TB的数据,那么节省的周期可能加起来长达几分钟

java - Hadoop 错误 .ClassCastException : org. apache.hadoop.io.LongWritable 无法转换为 org.apache.hadoop.io.Text

我的程序如下:publicstaticclassMapClassextendsMapper{publicvoidmap(Textkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//yourmapcodegoeshereString[]fields=value.toString().split(",");for(Stringstr:fields){context.write(newText(str),newLongWritable(1L));}}}publicintrun(Stringargs[])t

java - 如何配置 hadoop 的映射器,使其接受 <Text,IntWritable>

我正在使用两个映射器和两个缩减器。我收到以下错误:java.lang.ClassCastException:org.apache.hadoop.io.LongWritablecannotbecasttoorg.apache.hadoop.io.Text这是因为第一个reducer写我的第二个映射器正在获取但是,正如我所读,映射器采用默认情况下。所以,我必须设置输入格式,例如:job2.setInputFormatClass(MyInputFormat.class);有没有办法设置InputFormat类来接收? 最佳答案 如您所料,

apache-spark - Spark RDD : partitioning according to text file format

我有一个包含数十GB数据的文本文件,我需要从HDFS加载它并将其并行化为RDD。此文本文件使用以下格式描述项目。请注意,字母字符串不存在(每行的含义是隐含的)并且每行可以包含空格以分隔不同的值:0001(id)100010002000(dimensions)0100(weight)0030(amount)0002(id)111010005000(dimensions)0220(weight)3030(amount)我认为并行化此文件的最直接方法是将其从本地文件系统上传到HDFS,然后通过执行sc.textFile(filepath)创建一个RDD。但是,在这种情况下,分区将取决于与文件

java - Hadoop 选项没有任何效果(mapreduce.input.lineinputformat.linespermap、mapred.max.map.failures.percent)

我正在尝试实现一个MapReduce作业,其中每个映射器将占用150行文本文件,并且所有映射器将同时运行;此外,无论有多少maptask失败,它都不应该失败。这里是配置部分:JobConfconf=newJobConf(Main.class);conf.setJobName("Mymapreduce");conf.set("mapreduce.input.lineinputformat.linespermap","150");conf.set("mapred.max.map.failures.percent","100");conf.setInputFormat(NLineInputF

hadoop - 我们如何将 List<Text> 作为 Mapper 输出传递?

我正在研究一个Map-Reduce问题。但我一直停留在一点,我怎样才能通过List作为Mapperoutput?可不可以?如果是,那我们怎么知道configuration关于Mapperoutputclass? 最佳答案 您可以使用ArrayWritable类作为映射器类中的值对象。请为您的映射器类引用以下代码片段,ArrayWritablearrayWritable=newArrayWritable(Text.class);Text[]textValues=newText[2];textValues[0]=newText("val

java - Hadoop-伪分布式模式: Input path does not exist

我是Hadoop的新手..我只是以独立模式运行我的hadoop应用程序。它工作得很好。我现在决定将其移至伪分布式模式。我如上所述进行了配置更改。显示了我的xml文件的片段:我的core-site.xml如下所示:fs.default.namehdfs://localhost/hadoop.tmp.dir/tmp/hadoop-onurAbaseforothertemporarydirectories.我的hdfs-site.xml是dfs.replication1我的mapred.xml是mapred.job.trackerlocalhost:8021我运行了start-dfs.sh和

Hadoop 先生 : better to have compressed input files or raw files?

从问题中可以得出,我想知道什么时候使用压缩格式(如gzip)的输入文件是有意义的,什么时候使用未压缩格式的输入文件是有意义的。压缩文件的开销是多少?读取文件时会慢很多吗?是否对大输入文件进行了基准测试?谢谢! 最佳答案 除非您正在进行开发并且需要经常将数据从HDFS读取到本地文件系统以进行处理,否则以压缩格式输入文件通常是有意义的。压缩格式提供了显着的优势。除非您以其他方式设置,否则数据已经复制到Hadoop集群中。复制数据是很好的冗余,但会占用更多空间。如果您的所有数据都以3倍的比例进行复制,那么您将消耗3倍于存储它所需的容量。压

java - 错误值类 : class org. apache.hadoop.io.Text 不是类 org.apache.hadoop.io.IntWritable

我使用了一个映射器、一个缩减器和一个组合器类,但出现如下错误:java.io.IOException:wrongvalueclass:classorg.apache.hadoop.io.Textisnotclassorg.apache.hadoop.io.IntWritableatorg.apache.hadoop.mapred.IFile$Writer.append(IFile.java:199)atorg.apache.hadoop.mapred.Task$CombineOutputCollector.collect(Task.java:1307)atorg.apache.hado

Java Hadoop : How can I create mappers that take as input files and give an output which is the number of lines in each file?

我是Hadoop的新手,我已经设法运行了wordCount示例:http://hadoop.apache.org/common/docs/r0.18.2/mapred_tutorial.html假设我们有一个包含3个文件的文件夹。我希望每个文件都有一个映射器,这个映射器将只计算行数并将其返回给缩减器。然后,reducer会将每个映射器的行数作为输入,并将所有3个文件中存在的总行数作为输出。所以如果我们有以下3个文件input1.txtinput2.txtinput3.txt映射器返回:mapper1->[input1.txt,3]mapper2->[input2.txt,4]mappe