【问题标题】:Am I using the right framework?我是否使用了正确的框架?
【发布时间】:2017-08-08 08:39:09
【问题描述】:

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

数据流的大致思路是这样的:
csv 文件 -> flink -> elastic-> flink(进程数据) -> MongoDB -> Tableau

有大量以分号分隔的日志文件。 我想将这些文件写入 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,因为它提供了更多功能/社区项目吗?

【问题讨论】:

  • Spark 应该是一个不错的选择。 spark 更稳定,库更丰富,感谢 flink。

标签: scala apache-spark elasticsearch apache-flink


【解决方案1】:

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

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

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

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

此外,已经准备好 solutionSpark - Mongo - ES 的集成,或者您可以通过使用 ESMongo 的连接器来制作自己的。关于Flink - 您可以使用它来代替Spark,但Spark 是更成熟的技术并且拥有更广泛的社区。与替代方案一样,您可以使用 ETL 解决方案在系统之间进行快速开发/原型设计数据流(用鼠标拖动必要的组件),例如 StreamsetsNiFi

【讨论】:

  • 感谢您详尽而详细的回答。我很感激。我将研究 spark 并尝试执行我的任务。根据我的理解,我不需要添加 elasticsearch-hadoop 作为依赖项。如果我没有安装 hadoop,导入 elasticsearch-spark-20 是否足够? @rukavitsya
  • @user2811630,当然,您可以在没有 Hadoop 的情况下使用 Spark(例如,Spark 在 S3 上可以正常工作,而在没有 Hadoop 的情况下,Mesos 也可以正常工作),这取决于您使用 ES 的连接器,是的 - 使用 elasticsearch -spark 就够了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2014-07-19
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多