У меня есть spark.rdd.RDD[String] MapPartition
, который я создал с фильтром.Spark - Rdd String Cleaning/Manipulation
val myMapPartition = myTextFile.filter(_.split("\t")(2) == "\"red\"")
Этот фильтр разделить мое Textfile линию на вкладку разделитель и проверяется, равно ли второй элемент результирующего массива «красным»
myMapPartition.collect()
возвращает Array
типа String
. Вот пример:
24344 "someString" "red"
23421 "someOtherString" "red"
Я пытаюсь выполнить некоторые изменения в строках. В конечном счете, я искал логику замены строк, но сначала попытался объединить строку. Так что я бы искал что-то вроде этого:
24344 "someString hello" "red"
23421 "someOtherString hello" "red"
Я попытался сделать это с помощью map
:
val myCleanRdd = myMapPartition.map(_1 => (_1.concat(" hello")))
Однако, я закончил с:
24344 "someString" "red" hello
23421 "someOtherString" "red" hello
Мой вопрос как я могу манипулировать некоторыми элементами строки rdd? Я думаю, проблема в том, что мои строки считаются одной String
. Я не уверен, как правильно сопоставить это, чтобы я мог сосредоточиться на отдельных полях.
ОТКАЗ: Scala/Спарк нуб
Именно то, что я искал! Две вещи: Не могли бы вы обсудить, как применить этот шаблон к чему-то вроде функции stringReplace? Кроме того, как только я получу исходный красный цвет 'Array [String]', как я могу его распечатать? Прямо сейчас я просто вижу адреса памяти? Благодаря! –
См. Мои обновления к ответу. – DNA