Size: a a a

2021 February 20

AS

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

ИК

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

ИК

Иван Калининский... in Data Engineers
Andrey Smirnov
делал подобное на блумфильтрах, ну это такое.  Как-то раз на конфе в сбере они про подобное рассказывали. Вообщем надо мерить, а не гадать на распечатках
Я про HCBM - сильно сжатая битовая карта
источник

ИК

Иван Калининский... in Data Engineers
Andrey Smirnov
делал подобное на блумфильтрах, ну это такое.  Как-то раз на конфе в сбере они про подобное рассказывали. Вообщем надо мерить, а не гадать на распечатках
Измерять надо, иначе несерьёзно, согласен
источник

AS

Andrey Smirnov in Data Engineers
да, и я не могу понять претензий к коду, там по существу набор  if, что в это страшного (да там явное не оптимально сгенерировалось, но не ужас ужас)
источник

T

T in Data Engineers
Кстати про броткаст видел в спарковской джире тикет про имплементацию бродкаста между экзекьютерами, кто нибудь следит за ней, ещё пилят или забросили ?
источник

NN

No Name in Data Engineers
T
Кстати про броткаст видел в спарковской джире тикет про имплементацию бродкаста между экзекьютерами, кто нибудь следит за ней, ещё пилят или забросили ?
В смысле? Он же и так между экзекьюторами работает, как торрент. Или ты о чем-то другом?
источник

T

T in Data Engineers
No Name
В смысле? Он же и так между экзекьюторами работает, как торрент. Или ты о чем-то другом?
Погоди, он же на драйвер все отправляет а потом драйвер экзекьютерам шлёт, не?
источник

T

T in Data Engineers
No Name
В смысле? Он же и так между экзекьюторами работает, как торрент. Или ты о чем-то другом?
источник

NN

No Name in Data Engineers
T
Погоди, он же на драйвер все отправляет а потом драйвер экзекьютерам шлёт, не?
Не помню, отправляет ли он сразу на драйвер, но помню, что экзекуторы уже могли между собой передавать. Мб просто не могли миновать драйвер. Мне так казалось, когда я бродкаст изучал.
источник

T

T in Data Engineers
No Name
Не помню, отправляет ли он сразу на драйвер, но помню, что экзекуторы уже могли между собой передавать. Мб просто не могли миновать драйвер. Мне так казалось, когда я бродкаст изучал.
Я чёт уже не помню над будет посмотреть в исходниках
источник

NN

No Name in Data Engineers
T
Я чёт уже не помню над будет посмотреть в исходниках
Ну вот я теперь вместо Молчания ягнят сижу тикет копаю)
источник

T

T in Data Engineers
No Name
Ну вот я теперь вместо Молчания ягнят сижу тикет копаю)
У вас уже час ночи же? Лучше пойти спать
источник

NN

No Name in Data Engineers
T
У вас уже час ночи же? Лучше пойти спать
Да я поздно ложусь
источник

NN

No Name in Data Engineers
T
Я чёт уже не помню над будет посмотреть в исходниках
A BitTorrent-like implementation of [[org.apache.spark.broadcast.Broadcast]].
*
* The mechanism is as follows:
*
* The driver divides the serialized object into small chunks and
* stores those chunks in the BlockManager of the driver.
*
* On each executor, the executor first attempts to fetch the object from its BlockManager. If
* it does not exist, it then uses remote fetches to fetch the small chunks from the driver and/or
* other executors if available. Once it gets the chunks, it puts the chunks in its own
* BlockManager, ready for other executors to fetch from.
*
* This prevents the driver from being the bottleneck in sending out multiple copies of the
* broadcast data (one per executor).
источник

T

T in Data Engineers
No Name
A BitTorrent-like implementation of [[org.apache.spark.broadcast.Broadcast]].
*
* The mechanism is as follows:
*
* The driver divides the serialized object into small chunks and
* stores those chunks in the BlockManager of the driver.
*
* On each executor, the executor first attempts to fetch the object from its BlockManager. If
* it does not exist, it then uses remote fetches to fetch the small chunks from the driver and/or
* other executors if available. Once it gets the chunks, it puts the chunks in its own
* BlockManager, ready for other executors to fetch from.
*
* This prevents the driver from being the bottleneck in sending out multiple copies of the
* broadcast data (one per executor).
👍 ага тоже нашел в сорцах
источник

NN

No Name in Data Engineers
Есть мнение, что текущая реализация все таки требует поначалу сколлектить данные на драйвере, и только после этого уже начинается раскидывание по экзекуторам по принципу торрентов. А в тикете предлагали напрямую экзекуторам данными обменяться, минуя драйвер, и это может быть довольно стремной темой в части нагрузки на сеть (судя по комментам, я для этого туповат), поэтому так и не запилили.
источник

t

tenKe in Data Engineers
Andrey Smirnov
а бродкаст с неба упадет, его еще надо раскидать по экзекютерам, а дальше возможно будет такая-же портянка
я говорил про BroadcastHashJoin
источник

А

Алексей in Data Engineers
tenKe
я говорил про BroadcastHashJoin
Тоже не понятно, чем вероятностный блумфильтр лучше хэш массива в броадкаст запросе
источник

А

Алексей in Data Engineers
По портянке из ифов, вероятно прунинга на файлах тоже не будет. Если только заранее определить Макс/мин и допом добавить between в дополнении к in
источник