我是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])
我知道这是一个新手问题,但有人可以帮助我吗?感谢。
答案 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))
})