我是Scala和Spark的新手。我想通过计算编辑距离从现有的数据帧列中派生出一个新列。例如,FNAME和LNAME是两列数据框,想要添加名为NAMESCORE的新列,它将FNAME的编辑距离保持为LNAME。敬请使用工作密码或伪代码告知。
这是我得到部分答案的链接。
Derive multiple columns from a single column in a Spark DataFrame
答案 0 :(得分:0)
您可以使用UDF:
def udfToFindEditDistance(col1 :String,col2 :String): String ={
//find edit distance b/w col1 and col2
}
注册udf
val newUDF=udf(udfToFindEditDistance(_:String,_:String))
添加新列
val newDf=df.withColumn("newColumnName",newUDF(df("FNAME"),df("LNAME")))
答案 1 :(得分:0)
您可以使用levenshtein函数计算编辑距离。
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
.format("com.crealytics.spark.excel")
...
.load(...)
df.withColumn("NAME_DISTANCE", levenshtein($"Name_Left", $"Name_Right"))