我需要将流读取到非常大的文件(在TB中)。要实现更高的吞吐量,如果我们可以将文件部分缓存在内存中。 Spark可以将数据缓存在分布式内存中。如何使用spark来缓存文件部分?
文件大于任何一台计算机的本地存储,并且大于群集中内存的总容量。
答案 0 :(得分:1)
将数据存储在HDFS等分布式存储系统中。这将以分布式方式存储您的数据。您必须根据您的要求(内部部署或云端等)选择正确的文件系统。
对HDFS文件中的数据运行Spark。从文件中创建一个RDD(参见spark文档),过滤掉你实际需要的部分数据(例如,只包含&#34的行;错误"在一个大的日志文件中),并缓存必要的部分内存(以便后续查询更快)。
您可以调整大量与缓存相关的参数,以帮助您将数据放入内存中(使用kryo序列化保持数据序列化等)。有关失败的信息,请参阅Memory Tuning指南。
您还可以考虑将数据分解为多个部分(单独的文件,分区表等),并仅加载其中的一部分Spark。