在apacheflink中使用c/c++

dfuffjeb  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(745)

我和我的团队正在开发一个利用flink的应用程序。数据将使用计算量大的数值算法进行处理。为了尽可能地优化它,我想用c/c而不是java来编写这个算法。
问题是:是否可以在flink中使用c/c
代码?也许通过将其 Package 到java库中?

toe95027

toe950271#

我从来没有特别测试过这个案子。一般来说,您总是可以使用jni(java本机接口)使用来自java的本机代码。
其想法是让java facade公开您的本机代码,并在java(或其他jvm语言,如scala)中使用flink定义的计算图中使用这些方法。您必须使java和本机库在所有相关节点上都可用,才能使这项工作正常进行。如果您有一个hadoop集群,您可以利用yarn将文件与您的作业一起传送(这里的文档,请参阅) --yarn-ship cli选项)。
我建议您用一个非常小的本机函数进行增量测试。另外,不要低估java在性能方面的能力:通过一些经过深思熟虑的编程和利用jit和其他运行时优化,长时间运行的进程可以享受比具有非托管内存的类似本机代码更好的性能。
请记住,使用本机代码当然意味着将代码的可移植性限制在编译库的平台上。

相关问题