Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 向RDD提供用户定义的数据类型_Apache Spark_Rdd - Fatal编程技术网

Apache spark 向RDD提供用户定义的数据类型

Apache spark 向RDD提供用户定义的数据类型,apache-spark,rdd,Apache Spark,Rdd,我有一个这样的输入文件 A、 一, B、 二, C、 三, 如何将此RDD设置为这种格式 数据:RDD[(字符串,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],而

我有一个这样的输入文件

A、 一,

B、 二,

C、 三,

如何将此RDD设置为这种格式 数据:RDD[(字符串,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))

(我添加了一个
映射
,用于按
,“
”分割数据,我想您可能忘记添加到示例中了)。

我认为最可读的形式应该是:

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

但这不会处理错误,
Array(…)
toInt
都可能失败。

请用您尝试过的内容更新您的问题!不要把它贴在评论中。@Glennie Helles Sindholt我的错我忘了拆分。我想问一下,如果我们没有在“,”上拆分,然后我们映射(s=>(s(0),s(1).toInt)),那么它只需要s(0)将是文件上的第一个字符,s(1)将是第二个字符(在我们的示例中是逗号)?以什么方式不处理错误?你能给我举个例子吗?谢谢你们的回复。
toInt
将在字符串无法解析为数字时引发异常。那工作就会失败。
sc.textFile("myfile.txt")
  .map { line =>
    val Array(first, second) = line.split(",")
    Foo(first, second.toInt)
  }