在scala(> 1GB)中读取和处理非常大的CSV文件的有效方法是什么?



在Scala中,如何有效地(内存消耗+性能)读取非常大的csv文件?它是否足够快,只需逐行流式传输,并在每次迭代中处理每一行?

我需要对CSV数据做什么:->在我的应用程序中,CSV文件中的单行被视为一个单独的记录,CSV文件的所有记录都将被转换为XML元素和JSON格式,并以XML和JSON格式保存到另一个文件中。

所以这里的问题是,当从csv读取文件时,分块读取文件并将该块提供给另一个线程,该线程将把csv记录转换为xml/json并将该xml/json写入文件是否是一个好主意?如果是,如何?

CSV的数据可以是任何东西,数据类型没有限制,可以是数字、大小数、字符串或日期。在将这些不同的数据类型保存到xml之前,有什么简单的方法可以处理这些数据类型吗?或者我们不需要照顾类型?

非常感谢

如果这不是一次性任务,请创建一个程序,将此1GB文件拆分为小文件。然后提供这些新文件作为单独未来的输入。每个future将读取一个文件,并按照文件内容的顺序进行解析。File4在File3之后解析,后者在File2之后解析,而后者在File1之后解析。由于该文件没有键值对或分层数据结构,因此我建议您将其作为字符串读取。希望这能有所帮助。

最新更新