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

hiz5n14c  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(433)

我有一个spark数据框,其列salary如下所示:

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

dafault数据类型是string。我想把它转换成整数,去掉那些引起解析问题的行。
期望输出

|Salary|
|100|
|200|

有人可以让我知道过滤的行,这将导致数据类型解析问题的代码。提前谢谢。

y53ybaqx

y53ybaqx1#

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

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))

相关问题