Scala 获取Spark RDD的一系列列

Scala 获取Spark RDD的一系列列,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,现在我的RDD中有300多列,但我发现需要动态选择一系列列,并将它们放入LabledPoints数据类型中。作为Spark的新手,我想知道是否有任何索引方法可以选择RDD中的一系列列。类似于R中的temp\u data=data[,101:211]之类的内容。是否存在类似于val temp\u data=data.filter(u.column\u index in range(101:211)… 任何想法都是受欢迎和赞赏的。如果它是一个数据帧,那么像这样的想法应该会起作用: val df =

现在我的RDD中有300多列,但我发现需要动态选择一系列列,并将它们放入LabledPoints数据类型中。作为Spark的新手,我想知道是否有任何索引方法可以选择RDD中的一系列列。类似于R中的
temp\u data=data[,101:211]
之类的内容。是否存在类似于
val temp\u data=data.filter(u.column\u index in range(101:211)…


任何想法都是受欢迎和赞赏的。

如果它是一个数据帧,那么像这样的想法应该会起作用:

val df = rdd.toDF
df.select(df.columns.slice(101,211) : _*)

假设您拥有
数组
的RDD或任何其他scala集合(例如,
列表
)。您可以执行以下操作:

val data: RDD[Array[Int]] = sc.parallelize(Array(Array(1,2,3), Array(4,5,6)))
val sliced: RDD[Array[Int]] = data.map(_.slice(0,2))

sliced.collect()
> Array[Array[Int]] = Array(Array(1, 2), Array(4, 5))

有点老了,但我最近不得不做一些类似的事情并四处搜索。我需要选择所有的,但最后一列我有200多列

Spark 1.4.1
Scala 2.10.4

val df = hiveContext.sql("SELECT * FROM foobar")
val cols = df.columns.slice(0, df.columns.length - 1)
val new_df = df.select(cols.head, cols.tail:_*)

它必须是一个RDD,还是可以是一个DataFrame?以我有限的知识,DataFrame应该是好的。如果它在DataFrame中,你有解决方案吗?嗨,Justin,这对我不起作用val df=sqlcontext.read.format(“com.dataricks.spark.csv”)。option(“header”,“true”)//使用所有文件的第一行作为header.option(“inferSchema”,“true”)//自动推断数据类型。选项(“分隔符”,“\t”)。加载(“C:\\Users\\kalit\u 000\\Desktop\\typesafe\\spark\u safari\u mllib\\bulk\u data\\Chromer\\small\u combined.tsv”)df.printSchema()df.select(df.columns.slice(0190):\u*)@sriharikalicharanTummala发生了什么事?我在尝试时也遇到了一个错误。下面是消息:scala>val df2=df.select(df.columns.slice(0,2):216;):21:错误:重载方法值选择和可选项:(col:String,cols:String)org.apache.spark.sql.DataFrame(cols:org.apache.spark.sql.Column*)org.apache.spark.sql.DataFrame无法应用于(String)val df2=df.select(df.columns.slice(0,2):*)有什么想法吗?我正在以独立应用程序的形式运行spark 1.5