spark Dataframe值转换,更新

有一个这样的需求,原来Dataframe存储如下
spark Dataframe值转换,更新_第1张图片
需要把gender中的值转换为自己想要的值,如
1-》男
2-》女
3-》未知
“”->空值

关键代码如下:

//值映射函数
val valueMappingFun = (columnValue: String) => {
    val xValue = if (CheckUtil.isEmpty(columnValue)) "" else columnValue.toString.trim
    //switch_map 值映射map
    if (switch_map.getOrElse(xValue, null) == null) switch_map.get(otherKey).mkString else switch_map.get(xValue).mkString

  }
  //创建spark,functions udf函数
  //import implicit DF,DS,不是包下面的类,而是某一个变量值
  import spark.implicits._
  val custUdf = udf(valueMappingFun)

//主要处理方法
  def mapping(df: DataFrame): DataFrame = {
	 spark.sparkContext.broadcast(switch_map)
    spark.sparkContext.broadcast(otherKey)
    val resultDf = df.withColumn(columnCode, custUdf($"${columnCode}"))
    resultDf .show()
    resultDf
}

结果如下:
spark Dataframe值转换,更新_第2张图片

你可能感兴趣的:(hadoop,spark,dataframe)