簡體   English   中英

使用Apache Spark / Kafka / Storm將Java巨大的CSV文件處理和存儲到Cassandra

[英]Java Huge csv file processing and storing using Apache Spark/ Kafka/ Storm to Cassandra

我正在研究一個需要從csv / tsv讀取傳感器數據並將其插入Cassandra db的需求。

CSV格式:

sensor1時間戳1值
sensor1時間戳2值
sensor2時間戳1值
sensor2時間戳3值

細節:

用戶可以將文件上傳到我們的Web應用程序。 上傳文件后,我需要在下一頁中的“用戶”列中顯示唯一值。 例如 ->

  1. sensor1節點1
  2. sensor2節點2
  3. 傳感器創建

用戶可以使用現有的主鍵node1映射sensor1,在這種情況下,時間戳和sensor1的值將添加到主鍵等於node1的表中,或者創建主鍵,在這種情況下,時間戳和值將與新的主鍵。

我能夠使用Java8流和收集來實現這一點。 這正在處理小型的csv文件。

題:

  1. 如何將巨大的csv / tsv文件(200 GB)上傳到我的Web應用程序? 我應該在HDFS中上傳文件並在UI中指定路徑嗎? 我什至將巨大的文件分割成小塊(每個塊50 MB)。

  2. 如何從第一列獲取唯一值? 我可以在這里使用Kafka / spark嗎? 我需要將timestamp /值插入Cassandra db。 同樣,我可以在這里使用Kafka / Spark嗎?

非常感謝您的幫助。

如何將巨大的csv / tsv文件(200 GB)上傳到我的Web應用程序? 我應該在HDFS中上傳文件並在UI中指定路徑嗎? 我什至將巨大的文件分割成小塊(每個塊50 MB)。

取決於將如何使用您的Web應用程序。 在從客戶端到服務器的HTTP請求上下文中上載如此大的文件總是很棘手。 您必須異步進行。 是否將其放入HDFS或S3甚至是簡單的SFTP服務器中,都是設計選擇的問題,該選擇將影響您要圍繞文件構建哪種工具。 我建議從簡單的FTP / NAS之類開始,並且由於需要擴展,可以使用S3之類的東西。 (我沒有看到很多人使用HDFS作為共享文件存儲,但這不應阻止您嘗試)

如何從第一列獲取唯一值? 我可以在這里使用Kafka / spark嗎? 我需要將timestamp /值插入Cassandra db。 同樣,我可以在這里使用Kafka / Spark嗎?

Spark批處理甚至是常規的M / R工作都可以為您解決問題。 這只是一個簡單的groupBy操作,盡管您應該真正看一下您願意為延遲付出多少,因為groupBy操作通常很昂貴(涉及改組)。 通常,根據我有限的經驗,除非為您提供連續的源數據流,否則將流用於用例會有些過大。 但是您描述用例的方式對我來說似乎更像是一個批處理候選者。

我將重點關注的一些事情:如何從客戶端應用程序傳輸文件,如何實現Cassandra中數據可用性的端到端SLA,發生故障時會發生什么情況(我們重試等等),如何處理?我的工作通常會運行(用戶每次上傳文件時都會觸發它,或者它可能是cron任務)等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM