我在之前的线程Hadoop 中提出了一个非常相似的问题:如何将一个双精度数组作为键值对中的值?.
我的问题是我想将双数组作为值从映射传递到减少阶段。我得到的答案是序列化,转换为文本,将其传递给减速器并反序列化。这是一个很好的解决方案,但它就像对它进行两次序列化和反序列化。
ArrayWritable 只接受实现 Writable 的类型,例如 FloatWritable。所以另一种解决方案是将我的双精度数组转换为 DoubleWritables 数组。但这也需要一些时间,而且 Writables 是一种非常昂贵的资源。没有像 ArrayWritable array=new ArrayWritable(Double.class) 这样的非常简单的解决方案吗?