Tôi đang cố gắng khai thác hadoop để đào tạo nhiều mô hình. Dữ liệu của tôi đủ nhỏ để vừa với bộ nhớ nên tôi muốn có một mô hình được đào tạo trong mọi tác vụ bản đồ.Hadoop: Cách dễ dàng để có đối tượng là giá trị đầu ra không có giao diện có thể ghi
Vấn đề của tôi là khi tôi đã đào tạo xong mô hình của mình, tôi cần gửi nó đến bộ giảm tốc. Tôi đang sử dụng Weka để đào tạo mô hình. Tôi không muốn bắt đầu tìm cách thực hiện giao diện có thể ghi trong các lớp Weka, bởi vì nó cần rất nhiều nỗ lực. Tôi đang tìm một cách đơn giản để làm điều này.
Lớp Trình phân loại trong Weka triển khai giao diện Serializable. Làm thế nào tôi có thể gửi đối tượng này để giảm tốc?
edits
Dưới đây là liên kết đề cập đến WEKA đối tượng serialization: http://weka.wikispaces.com/Serialization
Đây là những gì mã của tôi trông giống như: Cấu hình công việc (chỉ là một phần của cấu hình được đăng tải):
conf.set("io.serializations","org.apache.hadoop.io.serializer.JavaSerialization," + "org.apache.hadoop.io.serializer.WritableSerialization");
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Classifier.class);
Chức năng bản đồ:
//load dataset in data variable
Classifier tree=new J48();
tree.buildClassifier();
context.write(new Text("whatever"), tree);
Bản đồ lớp của tôi kéo dài Mapper (Object, Text, Text, Classifier)
Nhưng tôi đang nhận được lỗi này:
java.lang.NullPointerException
at org.apache.hadoop.io.serializer.SerializationFactory.getSerializer(SerializationFactory.java:73)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:964)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:673)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:369)
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)
gì tôi đang làm vậy ??
Ohh thanks..I sẽ kiểm tra xem nó ra ngày hôm nay và gửi thắc mắc gì thêm. – jojoba
Tôi đã thực hiện một số chỉnh sửa vì tôi gặp sự cố. – jojoba
Văn bản chắc chắn không triển khai Serializable do đó hadoop không biết cách xử lý loại này - bạn có thể sử dụng cả tuần tự hóa của Java và hadoop cùng nhau - đặt 'io.serializations' thành' org.apache.hadoop.io.serializer.JavaSerialization , org.apache.hadoop.io.serializer.WritableSerialization' –