如何在火花中使用地图而不实现可序列化?

Posted

技术标签:

【中文标题】如何在火花中使用地图而不实现可序列化?【英文标题】:How to use map in spark without implementing Serializable? 【发布时间】:2020-03-27 06:29:53 【问题描述】:

我在代码中使用了map(),它抛出了NotSerializableException,所以我实现了Serializable

有没有其他方法可以克服这个异常,还是 map 总是使用Serializable

Dataset<Row> outdf=indf.map(new MapFunction<Row,Row>() 

    @Override
    public Row call(Row row)
          //Calling another function in another class 
 
       return r;//r is also a row
     
,encoder);

【问题讨论】:

在您的解决方案中实现Serializable 的是什么? 我使用这个代码的类。我的类名是 Mapping 所以它的类 Mapping 实现了 Serializable 如果你告诉我们你在哪里使用这个类,它可能会给我们一些线索 【参考方案1】:

在调用函数内部,如果你使用的是 Mapping 类中的某些东西(变量,对象),那么这个 Mapping 类需要实现 Serializable。

请参阅此article。

【讨论】:

以上是关于如何在火花中使用地图而不实现可序列化?的主要内容,如果未能解决你的问题,请参考以下文章

Java SonarQube规则squid:S1948 - 如何使用可序列化列表而不受绑定例如数组列表

如何在foreach中序列化jdbc连接以进行火花节点分布

使用可序列化而不是向/从文件写入和读取对象

如何在java中深度复制对象。该对象可能是也可能不是可序列化的[重复]

火花流中的广播变量空指针异常

PngImageFile类型的对象不是JSON可序列化的