如何通过导出编辑距离数据框列(String)

时间:2016-03-21 07:21:48

标签: spark-dataframe

我是Scala和Spark的新手。我想通过计算编辑距离从现有的数据帧列中派生出一个新列。例如,FNAME和LNAME是两列数据框,想要添加名为NAMESCORE的新列,它将FNAME的编辑距离保持为LNAME。敬请使用工作密码或伪代码告知。

这是我得到部分答案的链接。

Derive multiple columns from a single column in a Spark DataFrame

2 个答案:

答案 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函数计算编辑距离。

https://spark.apache.org/docs/1.6.2/api/java/org/apache/spark/sql/functions.html#levenshtein(org.apache.spark.sql.Column,%20org.apache.spark.sql.Column)

val sqlContext = new SQLContext(sc)
val df = sqlContext.read
    .format("com.crealytics.spark.excel")
    ...
    .load(...)
df.withColumn("NAME_DISTANCE", levenshtein($"Name_Left", $"Name_Right"))