Scala - 删除Spark DataFrame的第一行

时间:2016-09-23 00:05:10

标签: scala apache-spark

我知道数据帧应该是不可变的,而且我知道尝试更改它们并不是一个好主意。但是,我收到的文件有一个无用的4列标题(整个文件有50多列)。所以,我想要做的就是摆脱最上面的一行,因为它会抛弃一切。

我尝试了许多不同的解决方案(大多数都在这里找到),例如使用.filter()和地图替换,但是没有任何工作可做。

以下是数据外观的示例:

H | 300 | 23098234 | N
D | 399 | 54598755 | Y | 09983 | 09823 | 02983 | ... | 0987098
D | 654 | 65465465 | Y | 09983 | 09823 | 02983 | ... | 0987098
D | 198 | 02982093 | Y | 09983 | 09823 | 02983 | ... | 0987098

有什么想法吗?

2 个答案:

答案 0 :(得分:-1)

到目前为止,我所见过的最干净的方法是过滤掉第一行

csv_rows           = sc.textFile('path_to_csv')
skipable_first_row = csv_rows.first() 
useful_csv_rows    = csv_rows.filter(row => row != skipable_first_row)   

答案 1 :(得分:-2)

如果您的数据框只有1个分区,那么这应该有效:

val dfWithoutFirstRow = df.mapPartitions(iterator => iterator.drop(1))

否则请参阅here