2017-08-08 54 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將足夠 –