【发布时间】:2019-06-01 10:48:46
【问题描述】:
我正在尝试将 csv 文件中的值映射到 RDD,但由于某些字段为空,因此出现以下错误。
线程“主”org.apache.spark.SparkException 中的异常:作业因阶段失败而中止:阶段 0.0 中的任务 0 失败 1 次,最近一次失败:阶段 0.0 中丢失任务 0.0(TID 0,本地主机,执行程序驱动程序):java.lang.NumberFormatException:空字符串
以下是我正在使用的代码。
// Load and parse the data
val data = sc.textFile("data.csv")
val parsedData = data.map(s => Vectors.dense(s.split(',').map(_.toDouble))).cache()
有没有办法检查是否有空值?我想用 try catch 方法来做,但它似乎不起作用。
val parsedData = data.map(s => {
try {
val vector = Vectors.dense(s.split(',').map(_.toDouble))
}catch{
case e:NumberFormatException => println("Nulls somewhere")
}
(vector)
})
【问题讨论】:
-
spark-csv 包可用于读取 csv 数据。请参阅此stackoverflow.com/questions/29704333/…。如果您想要底层 RDD,请在 Dataframe 对象上调用
rdd()。
标签: regex scala apache-spark functional-programming try-catch