2012-03-31 29 views
0

私は多次元配列をHDFSに書き込む必要があります。ダブル配列は、シリアライズされているので、私はこのコードを使用してちょうどそれを行うと考えていた:ディレクトリが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(); 

、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) 

私のdouble配列は、これを行うために書き込み可能な実装する必要がある、または別の方法がありますか?

答えて

2

おそらくdouble.class ...の代わりにdouble[][].classを使用する必要がありますか? (使用している配列の次元によっては、多次元と言われましたが、実際の次元が何であるかは分かりません)。

+0

私はこれを考えましたが、何らかの理由でdouble [] []クラスは私にとって非常にばかばかしいようでした。ありがとう:D – jojoba

関連する問題