Недостаточно места для кэширования данных в памяти - PullRequest
0 голосов
/ 10 мая 2019

У меня есть требование прочитать файл в приложении потоковой передачи, и для его кэширования требуется больше времени.Поэтому я попытался воспроизвести это в спарк-оболочке.

Размер файла 2.7G.Я запустил спарк-оболочку с памятью драйвера как 6G.Но это все еще дает мне следующие предупреждения.Я считаю, что задержка в кэшировании файла из-за этого.Любая идея, как решить эту проблему.

 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,9 ГБ, а память драйвера для spark-shell - 10 ГБ.Я пытался кэшировать файл.Хотя при запуске спарк-оболочки упоминается 10G, для драйвера выделяется только 5,5 ГБ (прикреплен искровой интерфейс).

enter image description here

Что я не делаюЯ понимаю, что вся кэш-память (5,3 ГБ) и дополнительный диск объемом 2,8 ГБ используются для кэширования 2,9 ГБ файла.

Не могли бы вы сообщить мне, что именно происходит, когда мы выполняем кэш.Почему используется почти 3 раза ОЗУ. Это потому, что мой формат файла - паркет, а файл взорван при чтении в память?Я попытался создать текстовый файл из этого, просто чтобы узнать размер файла.Размер текстового файла был около 21 ГБ.

Спасибо

Спасибо.

1 Ответ

0 голосов
/ 12 июля 2019

Используйте org.apache.spark.serializer.KryoSerializer, чтобы минимизировать потребление памяти в спарк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...