#scala #apache-spark
#scala #apache-spark
Вопрос:
Мои входные данные — это RDD[Array[String]]
тип, значения примерно такие:
["hello1", "world1", "test1", "Awww that's bad."]
["hello2", "world2", "test2", "This is another test. I can't make it"]
["hello3", "world3", "test3", "no it's not behaving at all. i'm mad."]
["hello4", "world4", "test4", "I need a hug"]
Мне нужен последний столбец, поэтому я так и сделал inputdata.map(f => f(3))
. Как ни странно, я могу получить ожидаемый RDD[String]
результат для некоторых строк, но для некоторых он усечен.
Вот так:
"Awww"
"This is another test. I can't make it"
"no"
"I need a hug"
Что случилось с моими 1-й и 3-й строками?
Редактировать:
Чтобы добавить, я печатал выходные данные, используя это:
output.take(4).foreach(println)
Комментарии:
1. Можете ли вы показать функцию предиката
f
?2. @AmitPrasad Да? Извините, это лямбда-экспресс.
f
может быть любая буква … f(3) означает взятие элемента с индексом = 3 из массива.3. ах, извините, что я не видел
RDD[Array[String]]
ваш тип ввода4. Я не нахожу ничего неправильного в вашем заявлении о печати
5.
inputdata.map(f => f(3)).collect
илиoutput.take(4).foreach(println)
оба дают ожидаемый результат.
Ответ №1:
В приведенном выше примере вы можете использовать сбор или даже распечатать его, чтобы получить правильный результат.
Редактировать:
После добавления запятой внутри "
Комментарии:
1. Возможно, я нашел причину. Не могли бы вы повторить попытку, поставив
,
(запятую) после «Awww»?2. Я предполагаю, что проблема связана с запятой в моих исходных данных.