当前位置: 首页 > 知识库问答 >
问题:

Flink DataStream是否有类似mapPartition的api?

堵恺
2023-03-14

我想像这样在stream.map()中使用一个不可序列化的对象

stream.map { i =>
  val obj = new SomeUnserializableClass()
  obj.doSomething(i)
}

它非常低效,因为我创建了许多一些UnseralizableClass实例。实际上,它只能在每个工作器中创建一次。

在Spark中,我可以使用mapPartition来执行此操作。但在flink stream api中,我不知道。

共有1个答案

乜胜泫
2023-03-14

如果您正在处理一个不可序列化的类,我建议您创建一个RichFunction。在您的情况下是RichMapFunction。

Flink中的富操作符有一个open方法,该方法作为初始值设定项在taskmanager中执行一次。

因此,诀窍是使您的字段是瞬态的,并在您的open方法中实例化它。

检查下面的示例:

public class NonSerializableFieldMapFunction extends RichMapFunction {

    transient SomeUnserializableClass someUnserializableClass;

    @Override
    public void open(Configuration parameters) throws Exception {
        super.open(parameters);
        this.someUnserializableClass = new SomeUnserializableClass();
    }

    @Override
    public Object map(Object o) throws Exception {
        return someUnserializableClass.doSomething(o);
    }
}

那么您的代码将如下所示:

stream.map(new NonSerializableFieldMapFunction())

P、 D:我使用的是java语法,请将其改编为scala。

 类似资料:
  • 问题内容: 我喜欢整个WMI概念,并且可以在Linux(在某些脚本中)中真正使用它。Linux系统有类似的东西吗? 问题答案: 并不是的。您是否正在使用WMI获取系统参数,查询过程,更改配置或监视系统事件,等等? 内核通过和文件系统公开了许多信息和可调旋钮。没有查询语言,只有目录和文件的组织层次结构。其中一些文件是只读,读写或只写的。其中一些人有能力。 有些服务可能具有动态自定义客户查询和更新配置

  • 问题内容: 在C#中,您可以将一个类标记为,以便只能从同一包中对其进行访问。Java有什么类似的东西吗? 问题答案: 您可以通过从类的声明中省略安全修饰符(公共,私有)来创建程序包专用类。

  • 问题内容: 是否有与Java或JVM语言的Python virtualenv类似的东西? 问题答案: 据我了解,virtualenv使您能够拥有单独的库安装路径,从而有效地分隔“虚拟” Python安装。 Java没有“系统范围内已安装”库(*)的概念:它总是在类路径中搜索要加载的库。由于可以为每个应用程序定义类路径(并且需要将其定义!),因此每个应用程序都可以选择要加载的库和版本。 如果您更深入

  • 问题内容: Java中是否有内置方法来查找任何数据类型的大小?有什么方法可以找到尺寸? 问题答案: 否。标准Java SE类库中没有这种方法。 设计者的观点是Java不需要它,因为该语言使应用程序1无需知道需要为原始值,对象或具有给定数量的元素的数组保留多少空间。 您可能会认为sizeof运算符对需要了解其数据结构占用多少空间的人很有用。但是,您还可以使用Java内存分析器简单,可靠地获得此信息以

  • 问题内容: Python具有不错的功能。是否有等效的PHP? 问题答案: 只要所有数组的长度相同,就可以将with 作为第一个参数使用。 如果某些数组较短,则将使用null填充最长数组的长度,这与python不同,返回的结果是最短数组的长度。

  • 问题内容: 开始使用C#学习LINQ。 尤其是LINQ to Objects和LINQ to XML。 我真的很喜欢LINQ的强大功能。 我了解到有一种叫做JLINQ的JavaScript实现。 此外(如Catbert所言),Scala将具有LINQ 您知道LINQ或类似的东西是否将成为Java 7的一部分吗? 更新:2008年的有趣帖子-LINQ forJava工具 问题答案: 看一下Scala