在使用scala 时,给我们带来了很多便利,但同时,也有很多我们没注意到的坑。 我是从 Java 转过来的,所使用上多少会给两者做下比较,本文不做过多的比较,主要是为了记录下,在 spark 中使用 scala - Map - 序列化时遇到的一些坑。
打包方式为 maven - fat jar
- mutable Map,序列化使用的对象,为应用程序(spark_yarn_cache_files)当前对象,反序列化使用的对象为classpath中的对象引用,为每个executor当前环境中的包和对象,Map 的 key,value 均反序列化失败
- immutable Map,序列化和反序列化,使用的对象均为应用程序(spark_yarn_cache_files)中的对象,Map 的 key 为自定义类或依赖有 冲突的 jar 包时,反序列化失败,value 反序列化 正常
其实这个问题还是找了很久的,最终发现还是跟scala有关,当 Map 换为 Java 提供的 API 时,序列化正常,而 scala 的 Map 无论是 使用 有冲突的包,还是 使用 用户自定义的类,都还是有问题的
以下是实际问题中遇到的问题记录
scala.collection.mutable.Map
1、--master yarn-cluster:
a、--jars:不能添加应用程序的「jar包」,可以添加「guva包」,「driver」、「executor」使用mutable.map ** 反序列化 ** 找不到添加jar包的类
b、<