C++ 使用C/C++;在阿帕奇·弗林克

C++ 使用C/C++;在阿帕奇·弗林克,c++,apache-flink,C++,Apache Flink,我和我的团队正在开发一个利用Flink的应用程序。 数据将使用计算量大的数值算法进行处理。 为了尽可能地优化它,我想用C/C++而不是Java编写这个算法 问题是:是否可以在Flink中使用C/C++代码?也许是通过将其包装到Java库中?我从未专门测试过这个案例。通常,您可以使用Java本机接口使用来自Java的本机代码 其想法是让Java facade公开您的本机代码,并在用Java(或其他JVM语言,如Scala)中的Flink定义的计算图中使用这些方法。您必须使Java和本机库在所有涉及

我和我的团队正在开发一个利用Flink的应用程序。 数据将使用计算量大的数值算法进行处理。 为了尽可能地优化它,我想用C/C++而不是Java编写这个算法


问题是:是否可以在Flink中使用C/C++代码?也许是通过将其包装到Java库中?

我从未专门测试过这个案例。通常,您可以使用Java本机接口使用来自Java的本机代码

其想法是让Java facade公开您的本机代码,并在用Java(或其他JVM语言,如Scala)中的Flink定义的计算图中使用这些方法。您必须使Java和本机库在所有涉及的节点上都可用,才能实现这一点。如果您有一个Hadoop集群,您可以利用Thread随作业一起发送文件(文档,请参阅
--Thread ship
CLI选项)

我建议您使用一个非常小的本机函数进行增量测试。另外,不要低估Java在性能方面的能力:通过一些经过深思熟虑的编程和利用JIT和其他运行时优化,长时间运行的进程可以享受比具有非托管内存的类似本机代码更好的性能

请记住,使用本机代码当然意味着将代码的可移植性限制在编译库的平台上