2016-07-17 5 views
1

Я новичок в искры и сталкиваются с проблемами, выясняя, как конвертировать типы данных элементов RDD. Я следующий текстовый файл:конвертировать RDD [String, String] в RDD [Int, Int]

1 2 
2 3 
3 4 

, когда я создаю новый RDD, он по умолчанию принимает строковый тип данных

val exampleRDD = sc.textFile("example.txt").map(x => (x.split(" ")(0),x.split(" ")(1))) 
exampleRDD: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[5] at map at <console>:27 

Но я хочу, чтобы это было РДД [(Int, Int)]. Я попытался

val exampleRDD: RDD[(Int,Int)) =sc.textFile("example.txt").map(x => (x.split(" ")(0),x.split(" ")(1))) 

но дает ошибку

error: not found: type RDD

Любая помощь будет оценена.

ответ

0

Ошибка «error: not found: type RDD» - это потому, что вам нужно было бы полное имя класса, как org.apache.spark.rdd.RDD.

Но это еще не решило проблему. Чтобы вернуть Int, вам нужно преобразовать строку в Int.

val exampleRDD = sc.textFile("example.txt").map(x => (x.split(" ")(0).toInt,x.split(" ")(1).toInt)) 

Результат: exampleRDD: org.apache.spark.rdd.RDD [(Int, Int)] = MapPartitionsRDD [36] на карте по адресу: 34

0
sc.textFile("two.txt").map(_.split(" ")).map(ar => (ar(0).toInt, ar(1).toInt)) 

Если у вас есть более сложная формат, использование spark-csv - лучший выбор для анализа данных.

Смежные вопросы