您的位置:首页 > 其它

spark dataframe 新增列

2017-01-17 00:00 239 查看
往往对df增加列是比较常见的操作,df合并,转rdd之类的操作

有下面几种方式:

import org.apache.spark.sql.functions._

1、如果增加的列是基于df列的变化

//新增一列以oldColName * 2 为新列,$"oldColName" 相当于 col("oldColName")
df.withColumn("newColName", $"oldColName"*2)

2、以UDF方式增加

val cmsUrlPatten = """(^http[s]?://.+_)[0-9]+\.(shtml|html){1}.*""".r

def url2cms(url: String): String = {
val tagUrl = url.split("\\?")(0)
if (cmsUrlPatten.findAllIn(tagUrl).isEmpty) url
else {
val cmsUrlPatten(urlPre, urlEnd) = tagUrl
s"${urlPre}1.$urlEnd"
}
}

val sqlfunc = udf((arg: String) => url2cms(arg))

trafficDF.withColumn("cmsUrl", sqlfunc($"url"))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark spark dataframe udf