我在上一个hadoop线程中提出了一个非常相似的问题:如何在键值对中使用一个double数组作为值。
我的问题是,我想传递一个双数组作为值从Map上减少阶段。我得到的答案是序列化、转换为文本、将其传递给reducer并反序列化。这是一个很好的解决方案,但它就像序列化和反序列化它两次。
arraywritable只接受实现可写的类型,例如floatwritable。所以另一个解决方案是将我的double数组转换成doublewritables数组。但这也需要一些时间,而且可写资源非常昂贵。有没有一个非常简单的解决方案,比如arraywritable array=newarraywritable(double.class)???
2条答案
按热度按时间a1o7rhls1#
只需实现自己的可写接口。
例如,
yizd12fk2#
您可以指定
double[]
作为Map
:java数组自动
Serializable
如果元素类型为Serializable
,基本体都是Serializable
.