Ваш toString() на кортежей действительно не имеет для меня никакого смысла. Можете ли вы объяснить, почему вы хотите создать строки из кортежей, а затем разделить их позже?
Если вы готовы отобразить каждую строку в список элементов, а не в строковой кортеж элементов, можно переписать
(row(1), row(2)).toString
к
List(row(1), row(2))
и просто придавить результирующий список:
val list = List("0,aaa,111", "1,bbb,222", "2,ccc,333")
val tuples = list.map{ line =>
val row = line split ','
List(row(1), row(2))}
val flattenedTuples = tuples.flatten
println(flattenedTuples) // prints List(aaa, 111, bbb, 222, ccc, 333)
Обратите внимание, что то, что вы пытаетесь достичь, связано с уплощением и может быть d один использует flatMap, но не использует только карту. Вам нужно либо flatMap напрямую, либо карту, а затем сгладить, как я показал вам (я честно не помню, поддерживает ли Spark flatMap). Кроме того, как вы можете видеть, я использовал список как более идиоматическую структуру данных Scala, но он легко конвертируется в Array и наоборот.
Вы явно превращаете его в форму '' (AAA, 111) '' с '.toString', поэтому неясно, чего вы на самом деле хотите. Но возможно '.flatMap {cols => cols split ','; Array (cols (1), cols (2))}' будет делать это. –