Что делает функция split () в spark - PullRequest
1 голос
/ 28 апреля 2019

У меня есть файл данных с примером данных

Pune|020|WA

и т. Д.

Я загружаю данные в RDD, а затем запускаю функцию карты, внутри которой отправляюфункция разделенияЯ ожидаю, что строки будут разделены словами.например.

val testRDD = sc.textFile("file.txt");
val splitRDD = testRDD.map(x => x.split("|"))

Ожидаемое в newRDD значение:

Pune
020
WA

Получаемое значение - P,u,n,e,0,2,0,W,A

Пожалуйста, помогите объяснить также, когдаЯ пытаюсь напечатать СДР с splitRDD.foreach(println) Я получаю значения как

[Ljava.lang.String;@19e7bf4a
[Ljava.lang.String;@3dbfa08f
[Ljava.lang.String;@6fc62bf4
[Ljava.lang.String;@3b6fd980
[Ljava.lang.String;@2c3080fc
val testRDD = sc.textFile("file.txt");
val newRDD = testRDD.map(x => x.split("|"))

1 Ответ

1 голос
/ 28 апреля 2019

Метод split в Java принимает регулярное выражение. Символ трубы | имеет специальное значение в regexex, поэтому для того, чтобы ваш сплит работал, вам нужно экранировать трубу:

testRDD.map(x => x.split("\\|")) // Pune, 020, WA

Ваша вторая проблема связана с реализацией Java toString для массивов, что не очень полезно. Самый простой способ отобразить содержимое массива - просто сделать из него строку с mkString:

splitRDD.foreach(x => println(x.mkString(", "))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...