Spark本地调试遇到的 CheckPoint 序列化问题和org.apache.hadoop.nativeio.NativeIO$windows.createFilewithMode0

第一个问题

Dstream checkpointing has been enabled but the Dstreams with their functions are not serializable

原因是创建JSSC的函数 使用到 set参数,不能使用原生的 map.keyset因为不支持序列化

    通过spark消费kafka 并且元数据通过checkpoint保存

  Function0  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

参考:

https://stackoverflow.com/questions/51680277/java-lang-unsatisfiedlinkerror-org-apache-hadoop-io-nativeio-nativeiowindows-c

你可能感兴趣的:(sparkstreaming,本地调试错误,sparkstreaming)