У меня есть требование прочитать файл в приложении потоковой передачи, и для его кэширования требуется больше времени.Поэтому я попытался воспроизвести это в спарк-оболочке.
Размер файла 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](https://i.stack.imgur.com/lI954.png)
Что я не делаюЯ понимаю, что вся кэш-память (5,3 ГБ) и дополнительный диск объемом 2,8 ГБ используются для кэширования 2,9 ГБ файла.
Не могли бы вы сообщить мне, что именно происходит, когда мы выполняем кэш.Почему используется почти 3 раза ОЗУ. Это потому, что мой формат файла - паркет, а файл взорван при чтении в память?Я попытался создать текстовый файл из этого, просто чтобы узнать размер файла.Размер текстового файла был около 21 ГБ.
Спасибо
Спасибо.