获取一系列Spark RDD列

时间:2015-07-24 01:09:56

标签: scala apache-spark rdd

现在我的RDD中有300多列,但我发现需要动态选择一系列列并将它们放入LabledPoints数据类型中。作为Spark的新手,我想知道是否有任何索引方式可以在RDD中选择一系列列。 R中有temp_data = data[, 101:211]之类的东西。有类似val temp_data = data.filter(_.column_index in range(101:211)...的东西吗?

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

3 个答案:

答案 0 :(得分:2)

如果它是一个DataFrame,那么这样的东西应该可以工作:

<Content Include="Views\Home\Index.cshtml" />
<Content Include="Views\Home\Index.en-US.cshtml">
   <DependentUpon>Views\Home\Index.cshtml</DependentUpon>
</Content>
<Content Include="Views\Home\Index.ru-RU.cshtml">
   <DependentUpon>Views\Home\Index.cshtml</DependentUpon>
</Content>
<Content Include="Views\Home\Index.uk-UA.cshtml">
   <DependentUpon>Views\Home\Index.cshtml</DependentUpon>
</Content>

答案 1 :(得分:1)

假设您的RDD为Array或任何其他scala集合(例如List)。你可以这样做:

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))

答案 2 :(得分:1)

有点旧线程,但我最近不得不做类似的事情并四处寻找。我需要选择除最后一列之外的所有列,其中包含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:_*)