从JMS队列流式传输并存储在Hive / MySQL中

时间:2016-08-24 06:00:06

标签: mysql json scala hive jms

我有以下设置(我无法改变),我希望那些走在那条路上的人提出一些建议。我不确定这是否是正确的问题,但无论如何都要进行。

  • 各种JSON消息放置在JMS队列的不同通道上(Universal Messaging / webMethods)。
  • 在将数据存储在关系型DB之前,必须对其进行转换:重命名,数组展平,并从嵌套对象中提取一些结构。
  • 数据必须附加到MySQL(作为可视化工具的服务层)和Hive(用于长期存储)。
  • 我们坚持使用Spark 1.4.1,可能会在几个月内升至1.6.0。因此,结构化流媒体不是(还)选项。
  • 在某些时候,事件将直接流式传输到实时仪表板,所以现在有一些能够做到这一点的事情将是理想的。
  • 理想情况下,编码是在Scala中完成的(因为我们已经使用Spark和Scala进行了大量基于批处理的repo),因此最低要求是基于JVM的。

我看过Spark Streaming但它没有JMS适配器,据我所知,对JSON的操作将会完成using a SQLContext instance on the DStream's RDDs。我知道可以编写自定义适配器,但是我不确定Spark是否仍然是最好/最简单的解决方案。我也查看了Samza和Flink的文档,但对于JMS和/或JSON没有太多信息,至少不是本地的。

Apache Camel似乎可能拥有大量的连接器,但我对它并不太熟悉,而且我得到的印象是它没有做流媒体部分,'只是'你连接到各种系统的位置。还有Akka,虽然我得到的印象是它更像是消息传递系统的替代品并且设置了JMS。

有一些令人费解的可用工具,我现在处于亏损状态,无论要注意什么或需要注意什么。根据您用于获取消息,转换并插入Hive和MySQL的经验,您会推荐什么?

0 个答案:

没有答案