将用户定义的数据类型赋予 RDD

giving user defined data types to RDD

我有一个这样的输入文件

A,1

B,2

C,3

val data = sc.textFile("myfile.txt")

我怎样才能使这个 RDD 成为这种格式 数据:RDD[(String, Int)]

我试过了但是没用

case class foo (a: String, b: Int)
val data = sc.textFile("myfile.txt").map(
 c => foo(c(0).toString, c(1).toInt))

如果您想要 RDD[(String,Int)] 类型的 rdd,您应该将输入映射到 Tuple2[String, Int] 而不是 foo。像这样

 val data = sc.textFile("myfile.txt")
              .map(line => line.split(","))
              .map(s => (s(0), s(1).toInt))

(我添加了一个 map 用于按 "," 拆分您的数据,我认为您可能忘记添加到您的示例中)。

我认为最易读的形式是:

sc.textFile("myfile.txt")
  .map { line =>
    val Array(first, second) = line.split(",")
    Foo(first, second.toInt)
  }

虽然这不处理错误,Array(...)toInt 都可能失败。