现在我的RDD中有300多列,但我发现需要动态选择一系列列并将它们放入LabledPoints数据类型中。作为Spark的新手,我想知道是否有任何索引方式可以在RDD中选择一系列列。 R中有temp_data = data[, 101:211]
之类的东西。有类似val temp_data = data.filter(_.column_index in range(101:211)...
的东西吗?
任何想法都受到欢迎和赞赏。
答案 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:_*)