2016-12-01 89 views
1

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

的问题是:它是能够使用C/C++代码内弗林克?也许通过将它包装到Java库中?

回答

0

我从来没有测试这种情况下尤其如此。一般而言,您始终可以使用Java Native Interface的JNI来使用Java本机代码。

的想法是有一个Java门面暴露你的原生代码和Java中与弗林克定义(或其他JVM语言,比如Scala)的计算图形使用这些方法。您将不得不在所有涉及的节点上都提供Java库和本地库,以使其工作。如果您拥有Hadoop群集,则可以利用YARN将文件与作业一起发送(文档here,请参阅--yarn-ship CLI选项)。

我建议你逐步测试,暴露一个非常小的本地函数。此外,不要低估Java在性能方面的能力:通过一些精心设计的编程和利用JIT和其他运行时优化,长时间运行的进程可以享受到比非托管内存的类似本地代码更好的性能。

请记住,这当然是求助于原生代码将意味着限制你的代码的可移植性而您编译库的平台。