我们在php中有一个庞大的现有应用程序
每个输入文件都会发生上述过程。 输入文件由kafka消费者编写。是否可以通过某种方式不在Java中移植所有代码来使这个应用程序适合火花流?例如,按照以下方式
无论我刚刚提到的是什么都太高了。我只是想知道是否有可能通过不重新编码java中的现有应用程序来做到这一点?任何人都可以大致告诉我如何做到这一点?
答案 0 :(得分:1)
我认为不可能直接在Spark中使用PHP。根据文档(http://spark.apache.org/)和我的知识,它只支持Java,Scala,R和Python。
但是,您可以更改应用程序的体系结构并创建一些外部服务(ws,rest等)并在Spark中使用它们(您可以使用您想要的任何库) - 并非所有来自旧应用程序的模块都必须重写为Java。我会试着这样做:)
答案 1 :(得分:0)
我认为Storm在这种情况下是一个很好的选择,因为它通过Thrift提供非jvm语言集成。另外我确信有一个PHP Thrift客户端。
所以基本上你要做的就是找到一个用PHP编写的ShellSpout和ShellBolt(这是在应用程序中与Storm交互所需的集成部分),然后编写自己的spout和bolt,它们正在消耗Kafka并处理每一行
您可以根据需要使用此库: https://github.com/Lazyshot/storm-php
然后,您还必须找到一个PHP Thrift客户端来与Storm集群进行交互。
Storm Thrift定义可以在这里找到: https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift
可以在这里找到PHP Thrift客户端示例: https://thrift.apache.org/tutorial/php
现在将这些内容组合在一起,您可以用PHP编写自己的Apache Storm应用程序。
信息来源: http://storm.apache.org/about/multi-language.html http://storm.apache.org/releases/current/Using-non-JVM-languages-with-Storm.html