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

时间:2018-03-02 13:46:08

标签: scala variables apache-spark selection rdd

我是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])

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

2 个答案:

答案 0 :(得分:0)

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

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

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

希望它有所帮助。

答案 1 :(得分: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))
})