繁体   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