Как я могу сделать DStream после использования foreachrdd ()? [Дубликат]

Недавно я написал HTML-дезинфицирующее средство в Java. Он основан на смешанном подходе регулярных выражений и Java-коде. Лично я ненавижу регулярные выражения и его глупость (читаемость, ремонтопригодность и т. Д.), Но если вы уменьшите объем своих приложений, это может соответствовать вашим потребностям. Во всяком случае, мой дезинфицирующее средство использует белый список для тегов HTML и черный список для некоторых атрибутов стиля.

Для вашего удобства я создал игровое поле, чтобы вы могли проверить, соответствует ли код вашим требованиям: игровая площадка и код Java . Ваши отзывы будут оценены.

Существует небольшая статья, описывающая эту работу в моем блоге: http://roberto.open-lab.com

1
задан Rushabh Mehta 6 January 2017 в 15:26
поделиться

1 ответ

Подход к внешним вызовам с внешней массой - это прямое преобразование RDD в DStream на уровне раздела.

Шаблон выглядит следующим образом:

val transformedStream = dstream.transform{rdd => 
    rdd.mapPartitions{iterator => 
      val externalService = Service.instance() // point to reserve local resources or make server connections.
      val data = iterator.toList // to act in bulk. Need to tune partitioning to avoid huge data loads at this level
      val resultCollection = externalService(data)
      resultCollection.iterator
    }
 }

Этот процесс подхода каждый раздел базового RDD параллельно с использованием ресурсов, доступных в кластере. Обратите внимание, что подключение к внешней системе должно быть создано для каждого раздела (а не для каждого элемента).

3
ответ дан maasg 15 August 2018 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: