2016-06-24 2 views
0

Скажем, у меня есть строка "Hello, World\nHow are you today?"Параллелизировать по новой строке?

Я хотел бы sc.parallelize("Hello, World\nHow are you today?").collect() вернуть Array("Hello World", "How are you today?")

Вместо этого он возвращает массив, где каждый символ является отдельным элементом.

Как я могу распараллелить строку новой строкой, а не символом?

ответ

1

В данном конкретном случае я обычно просто сделать что-то вроде:

sc.parallelize(myString.split("\n")).collect() 

, если вы на самом деле уже есть большая строка в памяти, которая имеет новые строки внутри него.

Более распространенный случай использования Spark заключается в том, чтобы иметь дело с большим количеством данных, чем было бы удобно уже в памяти как blob, и в этом случае, если у вас есть файл, содержащий данные, sc.textFile автоматически использует символы новой строки в качестве разделителя по умолчанию:

sc.textFile("file:///home/user/mydata.txt").collect() 

mydata.txt, где могли бы выглядеть следующим образом:

Hello World 
How are you today? 
Смежные вопросы