将列从schemaRDD转换为字符串数组

时间:2014-11-23 18:44:43

标签: scala apache-spark rdd


我试图通过连接它的值来将一个字符串数组的列转换为一个字符串,但有些我不能将该特定列作为一个字符串数组与之相关:

val converted = jsonFiles.map(line=> {line(7).asInstanceOf[Array[String]] })
converted.collect

我最终得到了:

  

4/11/23 10:40:16 ERROR executor.Executor:阶段2.0(TID 5)中任务1.0中的异常   java.lang.ClassCastException:scala.collection.mutable.ArrayBuffer无法强制转换为[Ljava.lang.String;

我做错了什么?

谢谢,
丹尼尔

2 个答案:

答案 0 :(得分:0)

我可能无法正确理解你在寻找什么,但我会尝试。您需要读取一行String并将String拆分为数组

val converted = jsonFiles.map(line=> {line(7).split(" ")})
converted.collect

这里的问题是(取决于你正在做什么)"阶段2.0(TID 5)和#34;中的任务1.0中的异常应该是一个字符串,而不是分裂。要做到这一点,我们需要:

  • 将字符串拆分为" "数组
  • 从前4列创建数组
  • 从右子阵列
  • 添加此数组合并字符串

代码:

val columns = line(7).split(" ")
columns.take(4) :+ columns.drop(4).mkString(" ")

答案 1 :(得分:0)

我最终将它投射到Itreable [String]并称之为“mkString”。