Size: a a a

Scala User Group

2020 December 14

h

hohserg in Scala User Group
И если сделать переопределение, то не выйдет обратиться к реализации от компилятора
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
hohserg
Всем привет. У мя есть такой кейс-класс, который я юзаю в качестве ключа хэшмапы
case class SomeId (some1: Some1, some2: Some2) {
 //override lazy val hashCode: Int = super.hashCode()
}
Если раскоментировать lazy val переопределение hashCode, то хэшкоды от разных вызовов становятся различными. Почему? lazy val ведь просто мемоизация
А здесь super -- это какой класс?
источник

VM

V. M. in Scala User Group
Цитата "Фреймворк Spark включает функцию локального создания контрольных точек, приводящую к усечению графа происхождения набора RDD без сохранения в хранилище, она не подходит для кластеров в которых возможны отказы, вытеснение или динамические понижающие вертикальное масштабирование в период времени когда могут выполняться обращение к набору RDD"
Ациклический Граф тут - всё понятно создаем контрольную точку, до этой точки строится граф и дальше считается от неё. Но дальнейшее предупреждение непонятно ведь любой кластер подвержен отказам и в любом кластере  работает функция вытеснения (в том числе и промежуточных значений) в оперативной памяти новыми наборами.

динамические понижающие вертикальное масштабирование - это что такое?
источник

GP

Grigory Pomadchin in Scala User Group
V. M.
Цитата "Фреймворк Spark включает функцию локального создания контрольных точек, приводящую к усечению графа происхождения набора RDD без сохранения в хранилище, она не подходит для кластеров в которых возможны отказы, вытеснение или динамические понижающие вертикальное масштабирование в период времени когда могут выполняться обращение к набору RDD"
Ациклический Граф тут - всё понятно создаем контрольную точку, до этой точки строится граф и дальше считается от неё. Но дальнейшее предупреждение непонятно ведь любой кластер подвержен отказам и в любом кластере  работает функция вытеснения (в том числе и промежуточных значений) в оперативной памяти новыми наборами.

динамические понижающие вертикальное масштабирование - это что такое?
контрольные точки кстати были и для случаев когда жобы завалились
рестартануть с нее таска может в случае если она идемпотентна
источник

ИК

Иван Калининский... in Scala User Group
V. M.
Цитата "Фреймворк Spark включает функцию локального создания контрольных точек, приводящую к усечению графа происхождения набора RDD без сохранения в хранилище, она не подходит для кластеров в которых возможны отказы, вытеснение или динамические понижающие вертикальное масштабирование в период времени когда могут выполняться обращение к набору RDD"
Ациклический Граф тут - всё понятно создаем контрольную точку, до этой точки строится граф и дальше считается от неё. Но дальнейшее предупреждение непонятно ведь любой кластер подвержен отказам и в любом кластере  работает функция вытеснения (в том числе и промежуточных значений) в оперативной памяти новыми наборами.

динамические понижающие вертикальное масштабирование - это что такое?
Очень похоже, что тут без Клеппмана не разобраться, потому что перевод несколько запутанный))

Оригинальная цитата:
Spark includes a Local Checkpointing option that truncates the RDD’s lineage graph but doesn’t persist to stable storage. This is not suitable for clusters that may experience failures, preemption, or dynamic scale-downs during the time the RDD may be refer‐ enced.

Что касается самих локальных контрольных точек, то в их документирующих комментариях есть вот что:
Local checkpoints are written to executor storage and despite potentially faster they are unreliable and may compromise job completion.

По-моему, под отказами (failures) здесь имеются в виду полные отказы, при этом восстановиться невозможно, поскольку нельзя сопоставить DAG и контрольную точку.
Дальше мне приходится только догадываться: вытеснение (preemption) имеет отношение к шедулеру, значит, если шедулер может прерывать выполнение джобов или отдельных тасков, или приложений (кубер вроде может, но я совершенно не в курсе), то тут чекпоинты тоже оказываются неэффективными
И, наконец динамические понижающие вертикальное масштабирование - dynamic scale-downs, похоже тоже на какой-то процесс, когда часть кластера выводится из рабочего состояния, при этом нет гарантии, что чекпоинт можно будет использовать

Методы Dataset.checkpoint() отмечены как @Experimental с 2.1.0
источник

ИК

Иван Калининский... in Scala User Group
Может кинуть этот вопрос в чат инжиров?
источник

AD

Abu Dabi in Scala User Group
люди добрый
источник

AD

Abu Dabi in Scala User Group
всем вечер добрый
источник

AD

Abu Dabi in Scala User Group
кто работал с гатлингом помогите пожалуйста
источник

AD

Abu Dabi in Scala User Group
гугл не помогает
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Abu Dabi
кто работал с гатлингом помогите пожалуйста
источник

Α

Αγβεκ in Scala User Group
не ну че я?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Ты работал
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Помоги человеку
источник

Α

Αγβεκ in Scala User Group
угу
источник

GP

Grigory Pomadchin in Scala User Group
Иван Калининский
Очень похоже, что тут без Клеппмана не разобраться, потому что перевод несколько запутанный))

Оригинальная цитата:
Spark includes a Local Checkpointing option that truncates the RDD’s lineage graph but doesn’t persist to stable storage. This is not suitable for clusters that may experience failures, preemption, or dynamic scale-downs during the time the RDD may be refer‐ enced.

Что касается самих локальных контрольных точек, то в их документирующих комментариях есть вот что:
Local checkpoints are written to executor storage and despite potentially faster they are unreliable and may compromise job completion.

По-моему, под отказами (failures) здесь имеются в виду полные отказы, при этом восстановиться невозможно, поскольку нельзя сопоставить DAG и контрольную точку.
Дальше мне приходится только догадываться: вытеснение (preemption) имеет отношение к шедулеру, значит, если шедулер может прерывать выполнение джобов или отдельных тасков, или приложений (кубер вроде может, но я совершенно не в курсе), то тут чекпоинты тоже оказываются неэффективными
И, наконец динамические понижающие вертикальное масштабирование - dynamic scale-downs, похоже тоже на какой-то процесс, когда часть кластера выводится из рабочего состояния, при этом нет гарантии, что чекпоинт можно будет использовать

Методы Dataset.checkpoint() отмечены как @Experimental с 2.1.0
тут два момента:
- local checkpointing
- stable storage

локал чейкпонтинг никакого не даст стейбл стораджа
хочешь стейбла используй обычные чекпойнты и персисить их хоть на s3

другое дело что сам механизм чекпойнтов очень нежный

рекавериться можно хоть после кила кластера и заново его создания
источник

GP

Grigory Pomadchin in Scala User Group
чекните доку по чекпойнтам уже
отличия от стриминг чекйпонтов только в том что транкейт графа будет но это и понятно
как иначе стейт засейвить
источник

GP

Grigory Pomadchin in Scala User Group
а так рекавери из чекйпонта (датафрейма; ведь про него речь идет) sc.checkpointFile(path) // он рдд заспавнит которую зная схему можно в фрейм / сет конвертировать

гарантий по рекавери нет только потому что чекйпонты чувсвительны вообще ко всему
пересобрал жарку и добавил кода - может рекавери не случиться

чекпойнт не влезает в кластер - тож рухнет
источник

VM

V. M. in Scala User Group
Иван Калининский
Может кинуть этот вопрос в чат инжиров?
Че за чат? Дай линку.
источник

GP

Grigory Pomadchin in Scala User Group
V. M.
Че за чат? Дай линку.
источник