Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hadoop自定义可写文件_Hadoop_Writable - Fatal编程技术网

hadoop自定义可写文件

hadoop自定义可写文件,hadoop,writable,Hadoop,Writable,关于我的用例是否需要定制可写,我有更多的设计问题: 所以我有一个文档对,我将通过管道处理它,并将中间和最终数据写入HDFS。我的密钥类似于ObjectId-DocId-Pair-Lang。我不知道为什么/是否需要一个可定制的可写的用例。我想如果我没有钥匙,我需要一个可定制的可写的?此外,当我将数据写入Reducer中的HDFS时,我使用一个自定义分区器。那么,这样就不需要定制的可写文件了 我不确定我是否理解了需要定制可写权利的概念。有人能给我指出正确的方向吗?可写文件可用于对象的反序列化。例如,

关于我的用例是否需要定制可写,我有更多的设计问题:

所以我有一个文档对,我将通过管道处理它,并将中间和最终数据写入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容布卢特是对的,你可以看看