我使用的是正确的框架吗?

时间:2017-08-08 08:39:10

标签: scala apache-spark elasticsearch apache-flink

我是scala / flink / spark的新手,会有一些问题。 现在正在使用带有flink的scala。

数据流的总体思路如下:
csv文件 - > flink - > elastic-> flink(过程数据) - > MongoDB - >画面

存在大量以分号分隔的日志文件。 我想将这些文件写入elasticsearch作为我的数据库。 (这已经有效)
现在需要进行各种分析(例如,一致性报告/生产率报告)。 对于那些报告,需要不同类型的列。

我们的想法是使用flink从elasticsearch导入基础数据,编辑数据并将其保存到mongodb中,以便可以使用tableau进行数据可视化。

编辑将包括添加其他列,如工作日和不同状态的开始/结束时间

// +-------+-----+-----+  
// | status|date |time |  
// +-------+-----+-----+  
// | start | 1.1 |7:00 |  
// | run_a | 1.1 |7:20 |  
// | run_b | 1.1 |7:50 |  
// +-------+-----+-----+  


// +-------+-------+-------+----+  
// | status|s_time |e_time |day |  
// +-------+-------+-------+----|  
// | start | 7:00  |7:20   | MON|  
// | run_a | 7:20  |7:50   | MON|  
// | run_b | 7:50  |nextVal| MON|  
// +-------+-------+-------+----+  

经过一番研究后,我发现flink没有使用弹性作为数据源的可能性。 有一个github项目https://github.com/mnubo/flink-elasticsearch-source-connector,但它已经超过一年没有更新。这似乎没有正常工作,因为它给了我较少的点击,然后我会用相同的查询得到kibana。 还有其他选择吗?为什么默认情况下不支持此功能?

这些表转换是否适用于flink?用flink做它们有意义吗? (因为我很难实现它们)

我是否为此项目使用了正确的框架?我应该切换到spark,因为它提供了更多功能/社区项目吗?

1 个答案:

答案 0 :(得分:1)

首先,如果你的目标只是用日志处理(强大的搜索,可视化,存储),你就不能重新发明轮子并使用ELK stack  你将获得下一个能力 -

  • 使用Logstash
  • 的数据收集和日志解析引擎
  • 使用Kibana
  • 进行分析和可视化
  • Elasticsearch喜欢搜索引擎
  • 与云无缝集成(AWS或elastic cloud

但是这个软件是shareware - 你将无法获得免费版的全部功能,我可以根据我的个人经验说 - 试用版适合在制作中使用 - 它确实让生活更轻松。

如果您想为存储创建自己的自定义管道,转换和处理日志或其他文件Apache Spark是出于此目的的绝佳解决方案 - 您可以使用Spark之类的ETL解决方案操纵您想要的一切 - 构建数据管道非常容易(read from elasticsearch - > process it - > save to mongo; take from mongo - > {{1或者等等) - 你可以利用Spark 2.0 achieve speedup(与早期版本的Spark比较)。

此外,已经准备好solutionsend to visualisation的集成,或者您可以通过使用ESMongo的连接器来创建自己的Streamsets。关于Spark - Mongo - ES - 您可以使用它代替Flink,但Spark是更成熟的技术,拥有更广泛的社区。与替代方案一样,您可以使用ETL解决方案在系统之间快速开发/原型化数据流(使用鼠标拖动必要的组件),如NiFiMysql - How can I select rows by year if I have only the timestamp?