如何在 Scala 中使用 Spark select 来自 RDD 文件行的多个元素

How to select several element from an RDD file line using Spark in Scala

我是 spark 和 scala 的新手,我想 select 数据集中的几列。

我使用以下方法将 RDD 中的数据转换为一个文件:

val dataset = sc.textFile(args(0))

然后我把我的线分开

val resu = dataset.map(line => line.split("[=12=]1"))

但是我在我的数据集中有很多特征,我只想保留其中的一些特征(第 2 列和第 3 列)

我试过这个(与 Pyspark 一起使用)但它不起作用。

val resu = dataset.map(line => line.split("[=13=]1")[2,3])

我知道这是一个新手问题,但是有人可以帮助我吗?谢谢。

在 Scala 中,为了访问特定的列表元素,您必须使用括号。

在你的例子中,你想要一个子列表,所以你可以试试 slice(i, j) 函数。它提取从索引 i 到 j-1 的元素。所以在你的情况下,你可以使用:

val resu = dataset.map(line => line.split("[=10=]1").slice(2,4))

希望对您有所帮助。

I just want to keep some of then (colums 2 and 3)

如果您想要 tuple 形式的第 2 列和第 3 列,您可以

val resu = dataset.map(line => {
  val array = line.split("[=10=]1")
  (array(2), array(3))
})

但是,如果您想要 array 形式的第 2 列和第 3 列,那么您可以

val resu = dataset.map(line => {
  val array = line.split("[=11=]1")
  Array(array(2), array(3))
})