tôi nhận được ngoại lệ này khi viết một đối tượng để HDFS:NoSuchMethodError viết đối tượng Avro để HDFS sử dụng Builder
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.avro.Schema$Parser.parse(Ljava/lang/String;[Ljava/lang/String;)Lorg/apache/avro/Schema;
at com.blah.SomeType.<clinit>(SomeType.java:10)
Dòng nó được tham khảo trong các mã được tạo ra là thế này:
public class SomeType extends org.apache.avro.specific.SpecificRecordBase implements org.apache.avro.specific.SpecificRecord {
public static final org.apache.avro.Schema SCHEMA$ = new org.apache.avro.Schema.Parser().parse ..........
Và cuộc gọi trong mã của tôi là:
val someTypeBuilder = SomeType.newBuilder()
.setSomeField("some value")
// set a whole load of other fields
Gọi mã kiểm tra là nguyên nhân không có vấn đề.
Bình đang được chạy trên nút HDFS sử dụng lệnh hadoop jar
.
Bất kỳ ý tưởng nào có thể xảy ra ở đây?
Ok điều này có thể xảy ra. Nút HDFS của tôi đang sử dụng Avro 1.7.4 khi chạy bình. Có cách nào dễ dàng để cập nhật các jars được chia sẻ trên các nút HDFS? Hay là một bản cài đặt Hadoop mới? –
@jimmy_terra Tôi đã chỉnh sửa bài đăng của mình bằng cách nâng cấp Avro. Không thể đảm bảo nó sẽ làm việc cho ứng dụng của bạn mặc dù. – heenenee
Tôi khuyên bạn nên hạ cấp bản dựng của bạn (Gradle/Maven/bất kỳ thứ gì) để khớp với phiên bản trong môi trường mà bạn đang thực thi (ít nhất là cho đến khi bạn nâng cấp cụm của mình). Cách chính xác để nâng cấp cụm của bạn phụ thuộc vào thiết lập và nhà cung cấp của bạn (nếu có). – Keegan