Учитывая строку типа «Яблоко упало с дерева», как мне разбить его так, чтобы к каждому слову добавлялась строка текста, чтобы я получал СДР из строк, которые выглядели бы так:
"The | The apple fell from a tree"
"apple | The apple fell from a tree"
"fell | The apple fell from a tree"
"from | The apple fell from a tree"
"a | The apple fell from a tree"
"tree | The apple fell from a tree"
Это позволило бы мне отслеживать, откуда появилось слово.
Вот что я написал (соответствующие части)
var inputPath = /path/to/file.txt // Some txt file
var input = sc.textFile(inputPath) // RDD of lines of text
var words = input.flatMap(line => line.split(" ").foreach(word => word.concat(" | " + line))
Этот пример кода не работаетпотому что из того, что я понимаю, вы не можете пройти через flatMap более одного раза?Мне кажется, я получил ошибку, сказав, Found: Unit Required: TraversableOnce[?]
Я новичок в Spark, Scala и функциональном программировании.Когда я пишу scala в первый раз, я не очень беспокоюсь о производительности или о малейшем количестве кода и т. Д. Я просто хочу, чтобы что-то работало без необходимости перепроектировать мою реализацию.Я всегда могу выполнить рефакторинг позже.
Я понимаю, что textFile () дает мне RDD со строками, которые представляют каждую строку текста.FlatMap разделяет эти строки на "", и, поскольку это flatMap, мы получаем один массив, в отличие от группы массивов.Пожалуйста, поправьте меня, если я ошибаюсь или неправильно говорю.