绕过Spark(Scala)中每个文件的最后一行

时间:2015-11-06 11:49:36

标签: scala amazon-s3 apache-spark

此问题与this有关。

我正在Spark中处理包含csv.gz文件的S3文件夹。每个csv.gz文件都有一个包含列名的标头。这已通过上述SO链接解决,解决方案如下所示:

val rdd = sc.textFile("s3://.../my-s3-path").mapPartitions(_.drop(1))

现在的问题是看起来有些文件最后有换行符(' \ n')(我们假设我们不确定哪个文件)。因此,在将RDD转换为DataFrame时,我收到了一些错误。现在的问题是:

如果每个文件的最后一行是' \ n'?

1 个答案:

答案 0 :(得分:5)

为什么不是一个简单的过滤器:

val rdd = sc.textFile("s3...").filter(line => !line.equalsIgnoreCase("\n")).mapPartition...

或过滤任何空行:

val rdd = sc.textFile("s3...").filter(line => !line.trim().isEmpty)...