Что такое точная разница между Spark Transform в DStream и карте?
Я пытаюсь понять преобразование в Spark DStream в Spark Streaming.
Я знал, что преобразование в значительной степени превосходит по сравнению с картой, но
Может ли кто-нибудь дать мне пример в реальном времени или ясный пример, который может отличать трансформацию и карту?
Ответы
Ответ 1
Функция transform
в потоке Spark позволяет использовать любое из преобразований Apache Spark в базовом RDDs
для потока. map
используется для преобразования элемента в элемент и может быть реализован с помощью transform
. По существу, map
работает с элементами DStream
и transform
, позволяет работать с RDDs
DStream. Вы можете найти http://spark.apache.org/docs/latest/streaming-programming-guide.html#transformations-on-dstreams, чтобы быть полезным.
Ответ 2
map
является элементарным преобразованием и transform
является преобразованием RDD
Карта
map (func): возвращает новый DStream, передавая каждый элемент источника DStream через функцию func.
Вот пример, который демонстрирует операцию отображения и преобразования в DStream
val conf = new SparkConf().setMaster("local[*]").setAppName("StreamingTransformExample")
val ssc = new StreamingContext(conf, Seconds(5))
val rdd1 = ssc.sparkContext.parallelize(Array(1,2,3))
val rdd2 = ssc.sparkContext.parallelize(Array(4,5,6))
val rddQueue = new Queue[RDD[Int]]
rddQueue.enqueue(rdd1)
rddQueue.enqueue(rdd2)
val numsDStream = ssc.queueStream(rddQueue, true)
val plusOneDStream = numsDStream.map(x => x+1)
plusOneDStream.print()
Операция map
добавляет 1 к каждому элементу во всех RDD в DStream, дает результат, как показано ниже
-------------------------------------------
Time: 1501135220000 ms
-------------------------------------------
2
3
4
-------------------------------------------
Time: 1501135225000 ms
-------------------------------------------
5
6
7
-------------------------------------------
преобразования
transform (func): возвращает новый DStream, применяя функцию RDD-to-RDD для каждого RDD источника DStream. Это можно использовать для произвольного RDD в DStream.
val commonRdd = ssc.sparkContext.parallelize(Array(0))
val combinedDStream = numsDStream.transform(rdd=>(rdd.union(commonRdd)))
combinedDStream.print()
transform позволяет выполнять RDD-операции, такие как объединение, объединение и т.д. на RDD в DStream, приведенный здесь пример кода будет выдавать результат ниже
-------------------------------------------
Time: 1501135490000 ms
-------------------------------------------
1
2
3
0
-------------------------------------------
Time: 1501135495000 ms
-------------------------------------------
4
5
6
0
-------------------------------------------
Time: 1501135500000 ms
-------------------------------------------
0
-------------------------------------------
Time: 1501135505000 ms
-------------------------------------------
0
-------------------------------------------
здесь commonRdd
, который содержит элемент 0
, выполняется операция объединения со всеми лежащими в основе RDD в DStream.
Ответ 3
DStream имеет несколько RDD, так как каждый интервал между пакетами является другим RDD.
Таким образом, используя transform(), вы получаете возможность применить операцию RDD на
весь DStream.
Пример из Spark Docs:
http://spark.apache.org/docs/latest/streaming-programming-guide.html#transform-operation
Ответ 4
Функция преобразования в Spark Streaming позволяет выполнять любые преобразования в базовом RDD в потоке. Например, вы можете присоединиться к двум RDD при потоковой передаче с использованием Transform, в котором одним RDD будет некоторое RDD, созданное из текстового файла или параллельной коллекции, а другое RDD поступает из Stream текстового файла/сокета и т.д.
Карта работает с каждым элементом RDD в определенной партии и приводит к RDD после применения функции, переданной в Map.
Ответ 5
пример 1)
мужчины в очереди приходят в комнату, меняют платье, а потом выходят замуж за женщин по своему выбору.
1) Смена платья - это операция на карте (где они сами преобразуются в атрибуты)
2) Женатая женщина - это операция слияния/фильтрации на вас, но под воздействием других, которую мы можем назвать реальной операцией преобразования.
Пример 2) Студент поступает в колледж, мало кто посещает 2 лекции, мало кто посещает 4, и так далее.
1) Посещение лекций - это работа с картой, чем обычно занимаются студенты.
2) но определить, чему их научил лектор, зависит от данных лектора RDD, его повестки дня.
Предположим, что операция Transform - это Dimension или статическая таблица, которую вы хотите отфильтровать или проверить, чтобы идентифицировать нужные вам данные, и удаление может быть нежелательным.
Ответ 6
Если у меня есть данные от 0-1 с "Hello How" и за следующие 1-2 с "Are You". Затем в случае карты и сокращения с помощью ключевого примера, как показано выше, будут получены выходные данные (hello, 1) и (How, 1) для первого пакета и (are, 1) и (you, 1) для следующего пакета. Но аналогично для следующего примера, использующего "функцию преобразования", какова будет разница в выводе