没有足够的空间在内存中缓存数据帧

时间:2019-05-10 07:29:14

标签: apache-spark

我需要在流应用程序中读取文件,并且需要更多时间来缓存此文件。所以我试图在spark-shell中复制它。

文件大小为2.7G。我已经开始使用驱动程序内存作为6G来进行spark-shell了。但是它仍然给我以下警告。我相信缓存文件的延迟是由于这个原因。知道如何解决这个问题。

 scala> val files = spark.read.parquet("/data/realtime/hierarchy")
 files: org.apache.spark.sql.DataFrame = [geo_hierarchy_base_id: string, postal_code: string ... 11 more fields]

 scala> files.cache
 res2: files.type = [geo_hierarchy_base_id: string, postal_code: string ... 11 more fields]

 scala> files.count
 [Stage 5:================>                                         (8 + 4) / 29]2019-05-10 07:19:14 WARN  MemoryStore:66 - Not enough space to cache rdd_16_8 in memory! (computed 267.0 MB so far)
 2019-05-10 07:19:14 WARN  BlockManager:66 - Persisting block rdd_16_8 to disk instead.
 2019-05-10 07:19:14 WARN  MemoryStore:66 - Not enough space to cache rdd_16_11 in memory! (computed 267.1 MB so far)
 2019-05-10 07:19:14 WARN  MemoryStore:66 - Not enough space to cache rdd_16_9 in memory! (computed 267.0 MB so far)
 2019-05-10 07:19:14 WARN  BlockManager:66 - Persisting block rdd_16_9 to disk instead.
 2019-05-10 07:19:14 WARN  BlockManager:66 - Persisting block rdd_16_11 to disk instead.
 2019-05-10 07:19:14 WARN  MemoryStore:66 - Not enough space to cache rdd_16_10 in memory! (computed 267.0 MB so far)
 2019-05-10 07:19:14 WARN  BlockManager:66 - Persisting block rdd_16_10 to disk instead.
 2019-05-10 07:19:17 WARN  MemoryStore:66 - Not enough space to cache rdd_16_11 in memory! (computed 267.1 MB so far)
 2019-05-10 07:19:18 WARN  MemoryStore:66 - Not enough space to cache rdd_16_8 in memory! (computed 267.0 MB so far)

编辑

我正在尝试将文件缓存在spark-shell中。我的输入文件大小为2.9GB,spark-shell的驱动程序内存为10GB。我试图缓存文件。尽管在启动spark-shell时提到了10G,但仅为驱动程序分配了5.5GB(附带spark UI)。

enter image description here

我不明白的是,所有存储内存(5.3GB)和2.8GB的额外磁盘用于缓存2.9GB的文件。

请让我知道我们进行缓存时会发生什么。为什么要使用近3倍的RAM,这是因为我的文件格式为镶木地板并且读入内存时文件爆炸了吗?我试图从中创建一个文本文件,只是为了知道文件的大小。文本文件大小约为21GB。

谢谢

谢谢。

1 个答案:

答案 0 :(得分:0)

使用org.apache.spark.serializer.KryoSerializer最小化Spark中的内存消耗。