Apache spark 通过spark优化缓存
我正在开发一个解决方案,使用spark提供低延迟结果。为此,我计划预先缓存用户想要查询的数据 我能够在查询中获得良好的性能。我注意到的一点是,集群上的数据(拼花格式)在缓存时会爆炸。我理解这是由于反序列化和解码数据。我只是想知道是否还有其他方法可以减少内存占用 我试着用Apache spark 通过spark优化缓存,apache-spark,parquet,Apache Spark,Parquet,我正在开发一个解决方案,使用spark提供低延迟结果。为此,我计划预先缓存用户想要查询的数据 我能够在查询中获得良好的性能。我注意到的一点是,集群上的数据(拼花格式)在缓存时会爆炸。我理解这是由于反序列化和解码数据。我只是想知道是否还有其他方法可以减少内存占用 我试着用 sqlContext.cacheTable("table_name") and also tbl.persist(StorageLevel.MEMORY_AND_DISK_SER) 但是没有什么能帮助减少内存占用也许你想试试
sqlContext.cacheTable("table_name") and also
tbl.persist(StorageLevel.MEMORY_AND_DISK_SER)
但是没有什么能帮助减少内存占用也许你想试试orc?最近,orc的支持有所改善(更多信息:)。我不是专家,但我听说兽人使用内存列格式。。。这种格式提供了通过重复值的运行长度编码等技术进行压缩的机会,这往往会降低内存占用。当不缓存时,它也会爆炸 缓存与减少内存占用无关。您没有说明RDD或DF,但我认为是后者。这为RDD和DFs/DSs的改进提供了思路:
不能为不同的用户重复使用数据。你可以考虑的是Apache点燃。请参见此缓存数据对于用户来说不是永久性的。查询…它在spark上下文中是时间/内存限制的。。为什么你不能考虑其他的选择,比如MEM SQL或MyCAMP或基于Peritri on的蜂巢查询,知道它不是永久性的。我们希望用户在同一个数据集上运行一些查询,因此希望缓存数据,直到用户出现为止。我们确实希望探索其他选项,但目前我们将使用spark实现低延迟。