筛选导致spark中数据类型解析问题的行



我有一个带有Salary列的spark dataFrame,如下所示:

|Salary|
|"100"|
|"200"|
|"abc"|

dafault数据类型为字符串。我想把它转换成Integer,去掉那些导致解析问题的行。

所需输出

|Salary|
|100|
|200|

有人能告诉我过滤将导致数据类型解析问题的行的代码吗。提前谢谢。

您可以使用正则表达式过滤所需字段,然后强制转换列:

import org.apache.spark.sql.types._    
df.filter(row => row.getAs[String]("Salary").matches("""d+"""))
.withColumn("Salary", $"Salary".cast(IntegerType))

如果你不喜欢regex:,也可以使用Try

import scala.util._
df.filter(row => Try(row.getAs[String]("Salary").toInt).isSuccess)
.withColumn("Salary", $"Salary".cast(IntegerType))

相关内容

最新更新