2016-11-27 5 views
2

Я использую искровую карту, но пространство для хранения продолжает расти.spark-mapwithstate Почему количество хранилищ остается 20?

enter image description here

Вопрос 1.

MapPartitionsRDD Размер в памяти 9GB х 20 Вы можете уменьшить этот размер?

Вопрос 2.

And in InternalMapWithStateDStream, storagelevel is fixed to MEMORY_ONLY. 

Я хочу изменить упорствовать (StorageLevel.MEMORY_ONLY_SER) из-за его размера. Является ли это возможным?

Вопрос 3.

Private [streaming] object InternalMapWithStateDStream { 
    Private val DEFAULT_CHECKPOINT_DURATION_MULTIPLIER = 10 
} 

Я хочу, чтобы уменьшить это значение контрольной точки. Является ли это возможным?

ответ

2

MapPartitionsRDD Размер в памяти 9GB x 20 Можно ли уменьшить этот размер?

Это 9GB x 20, но как распределяется оно через ваш кластер? Вам нужно щелкнуть имя RDD, чтобы увидеть распределенное состояние. Если вы хотите уменьшить размер памяти, вам нужно подумать об эффективном способе представления ваших данных.

Я хочу изменить упорствовать (StorageLevel.MEMORY_ONLY_SER) из-за его размера. Является ли это возможным?

Нет, вы не можете переопределить настройки памяти в MapWithStateDStream.

Я хочу уменьшить это значение контрольной точки. Является ли это возможным?

Да, вы можете установить DStream сек контрольной точки интервала:

dStream.mapWithState(spec).checkpoint(Seconds(4)) 
+0

Спасибо за ответ. ** 1. Кластер хорошо распределен. ** Но вам нужно только последнее хранилище состояний, почему у вас осталось 19 хранилищ? ** dStream.mapWithState (spec) .checkpoint (Секунды (4)) ** не работает По умолчанию работает 10 interva 'val kafkastateStream = chnlStream.mapWithState (stateSpec) kafkastateStream.checkpoint (Секунды (10 * 5)) val kafkaSnapshotStream = kafkastateStream.stateSnapshots() ' –

+0

@HyunkeunLee * Но вам нужно только последнее хранилище состояний, почему у вас осталось 19 хранилищ? * Это полностью зависит от того, как вы сохраняете состояние. Имеет ли входящее состояние * разные клавиши *? Вы сохраняете новое состояние на каждой итерации? Покажите нам код. Что касается контрольной точки, она должна запускать каждый интервал времени по умолчанию *, если он не использует ваш пользовательский интервал. –