2017-08-08 51 views
2

我是scala/flink/spark的新手,会有几个问题。 现在scala正在使用flink。我使用正确的框架?

数据流的总体思路是这样的:
CSV文件 - >弗林克 - > elastic->弗林克(过程数据) - > MongoDB的 - >的Tableau

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

这个想法是通过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| 
// +-------+-------+-------+----+ 

结束时间了一些研究之后,我发现,弗林克不给使用弹性作为数据源的可能性。 有一个github项目https://github.com/mnubo/flink-elasticsearch-source-connector,但它已经超过一年没有更新。这似乎不能正常工作,因为它让我少点击,然后我会用相同的查询获取kibana。 有没有其他的选择?为什么这不是默认支持的?

那些表格转换可以用flink进行吗?用flink做它们有意义吗? (因为我很难实现它们)

我是否在这个项目中使用了正确的框架?我是否应该改用spark,因为它提供了更多的功能/社区项目?

+1

星火应该是个不错的选择。火星更加稳定和丰富的图书馆感谢flink。 –

回答

1

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

  • 数据收集和日志分析与Logstash
  • 分析引擎和可视化与Kibana
  • Elasticsearch像搜索引擎
  • 云(AWS或01的无缝集成)

但是这个软件是shareware - 你将不能访问到全功能的免费版本,我可以从我个人的经验说 - 试用版本适合在生产中使用 - 它真的使生活更轻松。

如果你想使自己定制的管道,用于存储,转换和处理日志或其他文件Apache Spark就是为了这个目的高超的解决方案 - 您可以使用SparkETL解决方案,操控与你想要的一切 - 建筑数据管道是非常容易(read from elasticsearch - >process it - >save to mongo; take from mongo - >send to visualisation等) - 您可以利用Spark 2.0,与achieve speedup(与早期版本的Spark相比)。

而且,已经有现成solutionSpark - Mongo - ES的整合,也可以通过使用连接器ESMongo使自己。关于Flink - 您可以使用它来代替Spark,但Spark是更成熟的技术并且拥有更广泛的社区。与其他选择一样,您可以使用ETL解决方案在系统之间快速开发/原型化数据流(使用鼠标拖动必需的组件),如StreamsetsNiFi

+0

感谢您提供详尽的答案。我非常感激。我会研究火花并尝试执行我的任务。 从我的理解,我不应该需要添加elasticsearch-hadoop作为依赖。如果我没有安装hadoop,那么不应该导入elasticsearch-spark-20? @rukavitsya – user2811630

+0

@ user2811630,当然,你可以在没有Hadoop的情况下使用Spark(例如,Spark可以在没有Hadoop的情况下正常工作在S3和Mesos上),这取决于ES使用什么连接器,是的 - 使用elasticsearch-spark将足够 –