hadoop自定义可写文件
关于我的用例是否需要定制可写,我有更多的设计问题: 所以我有一个文档对,我将通过管道处理它,并将中间和最终数据写入HDFS。我的密钥类似于ObjectId-DocId-Pair-Lang。我不知道为什么/是否需要一个可定制的可写的用例。我想如果我没有钥匙,我需要一个可定制的可写的?此外,当我将数据写入Reducer中的HDFS时,我使用一个自定义分区器。那么,这样就不需要定制的可写文件了hadoop自定义可写文件,hadoop,writable,Hadoop,Writable,关于我的用例是否需要定制可写,我有更多的设计问题: 所以我有一个文档对,我将通过管道处理它,并将中间和最终数据写入HDFS。我的密钥类似于ObjectId-DocId-Pair-Lang。我不知道为什么/是否需要一个可定制的可写的用例。我想如果我没有钥匙,我需要一个可定制的可写的?此外,当我将数据写入Reducer中的HDFS时,我使用一个自定义分区器。那么,这样就不需要定制的可写文件了 我不确定我是否理解了需要定制可写权利的概念。有人能给我指出正确的方向吗?可写文件可用于对象的反序列化。例如,
我不确定我是否理解了需要定制可写权利的概念。有人能给我指出正确的方向吗?可写文件可用于对象的反序列化。例如,日志条目可以包含时间戳、用户IP和浏览器代理。因此,您应该为标识此项的键实现自己的WritableComparable,并且应该实现一个值类,该值类实现可写性,用于读取和写入日志项中的属性。
这些序列化只是将数据从二进制格式获取到对象的一种简便方法。像HBase这样的一些框架仍然需要字节数组来持久化数据。因此,您将有大量开销自行传输,并会弄乱您的代码。可写内容可用于对象的反序列化。例如,日志条目可以包含时间戳、用户IP和浏览器代理。因此,您应该为标识此项的键实现自己的WritableComparable,并且应该实现一个值类,该值类实现可写性,用于读取和写入日志项中的属性。
这些序列化只是将数据从二进制格式获取到对象的一种简便方法。像HBase这样的一些框架仍然需要字节数组来持久化数据。因此,您将有大量的开销由您自己传输,并弄乱您的代码。托马斯的回答解释了一点。虽然为时已晚,但我想为潜在读者补充以下内容: Partitioner只在map和reduce阶段之间起作用,在将reducer写入输出文件时不起作用 我不认为在大多数情况下,将中间数据写入hdfs是一项要求,尽管有一些黑客可以应用于此
当您从reducer写入hdfs时,键将自动排序,每个reducer将写入一个单独的文件。根据键的
比较方法对键进行排序。因此,如果要基于多个变量进行排序,请选择扩展writeablecomparable
的自定义键类,并实现write
、readFields
和compareTo
方法。现在,您可以根据compareTo
实现控制键的排序方式Thomas的回答解释了一点。虽然为时已晚,但我想为潜在读者补充以下内容:
Partitioner只在map和reduce阶段之间起作用,在将reducer写入输出文件时不起作用
我不认为在大多数情况下,将中间数据写入hdfs是一项要求,尽管有一些黑客可以应用于此
当您从reducer写入hdfs时,键将自动排序,每个reducer将写入一个单独的文件。根据键的比较方法对键进行排序。因此,如果要基于多个变量进行排序,请选择扩展writeablecomparable
的自定义键类,并实现write
、readFields
和compareTo
方法。您现在可以根据比较来控制键的排序方式
实现当然我现在要读雅虎的教程和汤姆·怀特的书。当然我现在要读雅虎的教程和汤姆·怀特的书。谢谢托马斯。我想既然我在处理字符串键,我就不需要实现WritableComparable。不,你可以直接使用Text类。GL@Thomas荣布卢特是对的。你可以看看谢谢托马斯。我想既然我在处理字符串键,我就不需要实现WritableComparable。不,你可以直接使用Text类。GL@Thomas容布卢特是对的,你可以看看