Flink 改造不可序列化异常



>我有一个 Flink 作业从 Kafka 队列中读取事件,然后在满足某些条件时调用另一个服务。
我想使用 Retrofit2 调用该服务的 REST 端点,但我得到一个不可序列化的异常。我有几个平面地图相互连接(串联(,然后在最后一个 FlatMap 中调用该服务。我得到的例外:

线程"main"中的异常 org.apache.flink.api.common.InvalidProgramException: RichFlatMapTFunction 的实现是不可序列化的。这 对象可能包含或引用不可序列化的字段。
...
原因:java.io.NotSerializableException: retrofit2.改造$1
...

我初始化改造的方式:

RetrofitClient.getClient(BASE_URL).create(NotificationService.class);

和通知服务界面

public interface NotificationService {
    @PUT("/test")
    Call<String> putNotification(@Body Notification notification);
}

改造客户端类

public class RetrofitClient {
    private static Retrofit retrofit = null;
    public static Retrofit getClient(String baseUrl) {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }

输入您的通知类代码以获取更多详细信息,但看起来此答案有所帮助java.io.NotSerializableException 在类后带有"$1">

相关内容

  • 没有找到相关文章

最新更新