将字符串RDD转换为Int RDD

时间:2016-09-27 14:57:59

标签: scala apache-spark

我是scala的新手。我想知道在spark中使用scala处理大型数据集时是否可以读取为int RDD而不是String RDD

我尝试了以下内容:

val intArr = sc
              .textFile("Downloads/data/train.csv")
              .map(line=>line.split(","))
              .map(_.toInt)

但我收到错误:

  

错误:值toInt不是Array[String]

的成员

我需要转换为int rdd,因为我需要执行以下操作

val vectors = intArr.map(p => Vectors.dense(p))

,要求类型为整数

真正感谢任何形式的帮助。谢谢提前

1 个答案:

答案 0 :(得分:3)

据我所知,一行应该创建一个向量,所以它应该像:

val result = sc
           .textFile("Downloads/data/train.csv")
           .map(line => line.split(","))
           .map(numbers => Vectors.dense(numbers.map(_.toInt)))

numbers.map(_.toInt)会将数组的每个元素映射到int,因此结果类型将为Array[Int]