如何迭代 array[string] 在 spark scala 中?

how to iterate over array[string] in spark scala?

enter image description here这是我的示例输入:

val list=List("a;bc:de;f","uvw:xy;z","123:456")

我正在申请以下操作

val upper=list.map(x=>x.split(":")).map(x=>x.split(";"))

但它抛出错误- 错误:值拆分不是 Array[String]

的成员

任何人都可以帮助如何使用 split 以便我得到答案!

提前致谢。

使用list.map(x=>x.split(":"))会给你一个数组列表。

upper: List[Array[String]] = List(Array(a;bc, de;f), Array(uvw, xy;z), Array(123, 456))

映射之后,您可以看到该项目将是您尝试 运行 拆分的数组。

您可以使用flatMap,它首先会给您 List(a;bc, de;f, uvw, xy;z, 123, 456),然后您可以在 ;

上拆分的那些项目上使用地图
val upper = list.flatMap(_.split(":")).map(_.split(";"))

输出

upper: List[Array[String]] = List(Array(a, bc), Array(de, f), Array(uvw), Array(xy, z), Array(123), Array(456))

您可以在一次地图迭代中使用带有多个定界符的 split

val upper = list.map(x => x.split("[:;]"))

//upper: List[Array[String]] = List(Array(a, bc, de, f), Array(uvw, xy, z), Array(123, 456))

这是我试过并且有效的代码:

val upper=list.map(x=>x.split(":")).map(x=>x.map(x=>x.split(";")))

给出输出:

upper: List[Array[Array[String]]] = List(Array(Array(a, bc), Array(de, f)), Array(Array(uvw), Array(xy, z)), Array(Array(123), Array(456)))