У меня есть задача, когда мне нужно написать многомерный массив для HDFS. Так как двойные массивы сериализуемы, я думал, что я мог сделать это только с помощью этого кода:Hadoop: Как можно написать многомерный массив в HDFS?
FileSystem fs=FileSystem.get(context.getConfiguration());
FSDataOutputStream dos = fs.create(new Path(directory+"/Predictions"));
ObjectWritable obj=new ObjectWritable(double.class,labelPredictions);
obj.write(dos);
dos.close();
где директория пути в HDFS, labelPredictions является многомерным массивом. Но когда я делаю это я получаю эту ошибку:
java.lang.ClassCastException: [[D cannot be cast to java.lang.Double
at org.apache.hadoop.io.ObjectWritable.writeObject(ObjectWritable.java:150)
at org.apache.hadoop.io.ObjectWritable.write(ObjectWritable.java:70)
at MapReduce.MapReduce$Reduce.cleanup(MapReduce.java:181)
at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:178)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:648)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:416)
at org.apache.hadoop.mapred.Child$4.run(Child.java:259)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.Child.main(Child.java:253)
ли мой двойной массив нужно реализовать Writable, чтобы сделать это, или есть другой способ?
ну, я подумал об этом, но почему-то дважды [] []. класс казался мне очень глупым. Спасибо: D – jojoba