Size: a a a

2021 March 29

EK

Evgenii Kuznetcov in Data Engineers
it: Iterator[Future[T]]  - список тасок. Большинство из них не запущены.

it.sliding(batchSize - 1) слайдинг итератор. Когда читают его элемент, это заставляет "материализоваться" несколько следующих. Не понимаю, правда, зачем нужен "-1".

В данном случае "материализоваться" значит запустить таск.

Далее на следующем шаге, перед тем как запустить новый таск, нужно дождаться предыдущего. Таким образом, ограничено максимальное к-во одновременных тасков.

Вдохновляться этим кодом не надо
источник

AZ

Anton Zadorozhniy in Data Engineers
Maxim Yastremsky
там по факту вообще стоит Warehouse Builder. Вот с него надо переехать. Предположительно на ODI. Но т.к. все равно много боли не избежать - хотелось попутно рассмотреть варианты. Может дешевле/универсальнее получится.
мое мнение - лучше на ODI переехать, все остальное будет сильно больнее, ODI архитектурно очень приятный тул
источник

EK

Evgenii Kuznetcov in Data Engineers
Скорее пример, как можно на коленке что-то собрать, когда лень импортировать либу
источник

AS

Andrey Smirnov in Data Engineers
it.sliding(batchSize - 1) слайдинг итератор. Когда читают его элемент, это заставляет "материализоваться" несколько следующих. Не понимаю, правда, зачем нужен "-1".
они разбивают на head and tail, и таски из следующего батча начну поступать после выполнения head текущего
источник

AS

Andrey Smirnov in Data Engineers
Evgenii Kuznetcov
it: Iterator[Future[T]]  - список тасок. Большинство из них не запущены.

it.sliding(batchSize - 1) слайдинг итератор. Когда читают его элемент, это заставляет "материализоваться" несколько следующих. Не понимаю, правда, зачем нужен "-1".

В данном случае "материализоваться" значит запустить таск.

Далее на следующем шаге, перед тем как запустить новый таск, нужно дождаться предыдущего. Таким образом, ограничено максимальное к-во одновременных тасков.

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

SS

Sergey Sheremeta in Data Engineers
Evgenii Kuznetcov
it: Iterator[Future[T]]  - список тасок. Большинство из них не запущены.

it.sliding(batchSize - 1) слайдинг итератор. Когда читают его элемент, это заставляет "материализоваться" несколько следующих. Не понимаю, правда, зачем нужен "-1".

В данном случае "материализоваться" значит запустить таск.

Далее на следующем шаге, перед тем как запустить новый таск, нужно дождаться предыдущего. Таким образом, ограничено максимальное к-во одновременных тасков.

Вдохновляться этим кодом не надо
вроде понял, спасибо!!!
источник

EK

Evgenii Kuznetcov in Data Engineers
Andrey Smirnov
по мне хороший код, мы где-то застряли на блокирующем вызове для всего батча, тут готовое решение как обойти это
Как я понимаю, если одна таска сильно затормозит, то это не поможет: запустятся 2 следующие. Но дальше все равно нужно будет дождаться тормозящей, чтобы запустить третью
источник

SS

Sergey Sheremeta in Data Engineers
Evgenii Kuznetcov
Как я понимаю, если одна таска сильно затормозит, то это не поможет: запустятся 2 следующие. Но дальше все равно нужно будет дождаться тормозящей, чтобы запустить третью
ага, сохраняется упорядоченность тасков, просто какие-то из tail-части будут раньше запускаться и отрабатывать быстрее, но затыки по каким-то таскам возможны на время таймаута
источник

AS

Andrey Smirnov in Data Engineers
Evgenii Kuznetcov
Как я понимаю, если одна таска сильно затормозит, то это не поможет: запустятся 2 следующие. Но дальше все равно нужно будет дождаться тормозящей, чтобы запустить третью
я тоже так понимаю, возможно решение на очередях было бы лучше, но кода понадобилось бы больше
источник

EK

Evgenii Kuznetcov in Data Engineers
Sergey Sheremeta
ага, сохраняется упорядоченность тасков, просто какие-то из tail-части будут раньше запускаться и отрабатывать быстрее, но затыки по каким-то таскам возможны на время таймаута
А, ну да, упорядоченность бывает важна, и подругому не сделать без потенциальных спейс-ликов
источник

SS

Sergey Sheremeta in Data Engineers
еще вопрос: чтобы сходу такие конструкции понимать - это какие книги надо читать, на какие курсы записываться? или только с опытом с промышленной разработке на Скале?
источник

EK

Evgenii Kuznetcov in Data Engineers
Andrey Smirnov
я тоже так понимаю, возможно решение на очередях было бы лучше, но кода понадобилось бы больше
Ну вот это тот момент, когда лучше импортировать fs2, zio-stream или тот же akka-stream
источник

AS

Andrey Smirnov in Data Engineers
Sergey Sheremeta
еще вопрос: чтобы сходу такие конструкции понимать - это какие книги надо читать, на какие курсы записываться? или только с опытом с промышленной разработке на Скале?
есть книга про https://www.packtpub.com/product/learning-concurrent-programming-in-scala-second-edition/9781786466891
но если постоянно с этим не сталкиваешься, то забывается (по крайней мере я)
источник

SS

Sergey Sheremeta in Data Engineers
спасибо! здоровья вам )
источник

ИК

Иван Калининский... in Data Engineers
Когда отказывался от параллельных коллекций, спрашивал совета, сам Олег )) ответил, что можно взять AkkaStreams (так я понял его код), но я не рискнул и в итоге пользуюсь вот чем:
https://scastie.scala-lang.org/MHDziFqeS16igTNmWvdKIw
источник

EK

Evgenii Kuznetcov in Data Engineers
Sergey Sheremeta
еще вопрос: чтобы сходу такие конструкции понимать - это какие книги надо читать, на какие курсы записываться? или только с опытом с промышленной разработке на Скале?
Это конкарренси из говна и палок. Имеет право на жизнь и есть в любом проекте. Но понимать это не надо
источник

AS

Andrey Smirnov in Data Engineers
Evgenii Kuznetcov
Ну вот это тот момент, когда лучше импортировать fs2, zio-stream или тот же akka-stream
akka-stream все-таки тяжеловато в каждый первый проект тащить (про остальные не знаю), вот такой код вполне имеет право на жизнь, опять же ИМНО
источник

ИК

Иван Калининский... in Data Engineers
в этой книге нет ничего про: Monix, ZIO, Cats.Effect, зато есть JavaRX и реакторы. И параллельные коллекции, за которые ещё и шеймят
источник

ИК

Иван Калининский... in Data Engineers
А вот первые главы про основы считаю очень хорошо
источник

AZ

Anton Zadorozhniy in Data Engineers
Иван Калининский
в этой книге нет ничего про: Monix, ZIO, Cats.Effect, зато есть JavaRX и реакторы. И параллельные коллекции, за которые ещё и шеймят
мне тоже показалось что книжка старовата, но я и не эксперт в этом деле
источник