簡體   English   中英

Hadoop:有人可以如何將多維數組寫入HDFS?

[英]Hadoop: How can someone write a multidimensional array to HDFS?

我有一個任務,我需要寫一個多維數組到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();

其中directory是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來執行此操作,還是有另一種方法?

也許你應該使用double[][].class而不是double.class ......? (根據您正在使用的陣列的尺寸 - 您說“多維”,但不清楚實際尺寸是什么。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM