第一个问题
Dstream checkpointing has been enabled but the Dstreams with their functions are not serializable
原因是创建JSSC的函数 使用到 set参数,不能使用原生的 map.keyset因为不支持序列化
通过spark消费kafka 并且元数据通过checkpoint保存
Function0<JavaStreamingContext> createContextFunc= () -> createContext(conf);
JavaStreamingContext jssc = CommonUtil.getJavaStreamingContext(
ConfigurationManager.getProperty("spark.CheckPointPath"), createContextFunc);
问题是 创建函数里用到了通过读取redis保存的topic-partition map信息 直接使用的map.keyset 但是map.keyset是不可序列化的
解决办法
new HashSet<>(map.keyset())
第二个问题
org.apache.hadoop.nativeio.NativeIO$windows.createFilewithMode0
解决
解决方案 移除 hadoop.dll
参考: