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

#apache-spark #spark-streaming

#apache-spark #потоковая передача Spark

Вопрос:

У меня есть вариант использования, когда данные входного потока искажены, объем данных может составлять от 0 событий до 50 000 событий на пакет. Каждая запись данных не зависит от других. Поэтому, чтобы избежать перетасовки, вызванной перераспределением, я хочу использовать какое-то динамическое перераспределение в зависимости от размера пакета. Я не могу получить размер пакета, используя количество потоков.

Мой вариант использования очень прост: у меня неизвестный объем данных, поступающих в процесс стереообмена spark, который я хочу обрабатывать параллельно и сохранять в текстовый файл. Я хочу запускать эти данные параллельно, поэтому я использую перераспределение, в котором введен shuffle. Я хочу избежать перетасовки из-за перераспределения.

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

Комментарии:

1. Вы не можете избежать перетасовки при перераспределении данных. По сути, это синонимы. Какой источник ввода вы используете?

2. Большое спасибо за ваш ответ. Я использую Kafka в качестве источника ввода.

3. С прямым подходом?

4. Да, но возникло много проблем, когда мы попытались управлять нашим собственным смещением для восстановления, используя прямой подход и перераспределения. Итак, теперь у нас есть прямой api прямо из spark doc. Нет смещения mgmt и т. Д.

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