仅读取前n列的Spark数据集

时间:2018-10-11 19:31:15

标签: apache-spark apache-spark-sql

我有一个超过5000列的数据集,即使尝试限制为10行,当尝试读取该数据集时也会抛出OutOfMemoryException。 cause of exception上还有另一篇文章,因此我只想阅读前n列以避免该错误。 我找不到执行此操作的api调用,并且只能使用headlimit限制行。 有没有一种方法可以只限制前几列?谢谢。

1 个答案:

答案 0 :(得分:0)

鉴于您的数据集为ds,则可以将前n列提取到Array中:

val n = 2
val firstNCols = ds.columns.take(n)

,然后从数据集中仅选择这些列:

ds.select(firstNCols.head, firstNCols.tail:_*)