如何使用Scala中的Spark从RDD文件行中选择多个元素

问题描述 投票:0回答:2

我是spark和scala的新手,我想从数据集中选择几个列。

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

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

然后我分开了我的台词

val resu = dataset.map(line => line.split("\001"))

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

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

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

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

scala variables apache-spark selection rdd
2个回答
0
投票

我只想保留一些(第2栏和第3栏)

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

val resu = dataset.map(line => {
  val array = line.split("\001")
  (array(2), array(3))
})

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

val resu = dataset.map(line => {
  val array = line.split("\001")
  Array(array(2), array(3))
})

0
投票

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

在您的情况下,您需要一个子列表,因此您可以尝试切片(i,j)函数。它将索引i中的元素提取到j-1。所以在你的情况下,你可以使用:

val resu = dataset.map(line => line.split("\001").slice(2,4))

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.