У меня есть требование для создания преобразователя пользовательских функций в spark scala.I. Например, у меня есть фрейм данных scala
+--------------------+ .
| email_list| .
+--------------------+ .
|testmail1115@gmail.com| .
|mavenmaven@mlail.com| .
|dnd.7899334622@gmail.com| .
+--------------------+ .
Если я использую преобразователь, он преобразует входной массив строк в массивn-grams. like ниже:
+--------------------+--------------------+
| email_list| ngrams| .
+--------------------+--------------------+
|testmail1115@gmail.com|[t e, e s, s t, t...|
|mavenmaven@mlail.com|[m a, a v, v e, e...| .
|dnd.7899334622@gmail.com|[d n, n d, d...| .
+--------------------+--------------------+ .
Как получить отличную ngram, представляющую скорее образец или массив в приведенном ниже коде:
import org.apache.spark.ml.feature.NGram
val emailD1F=emailDF.withColumn("email_split", split(col("email_list"), "@").getItem(0)).withColumn("email_split", split(col("email_split"), "")) .
val ngram = new NGram().setN(2).setInputCol("col1").setOutputCol("ngrams")
val ngramDataFrame = ngram.transform(emailD1F)
ngramDataFrame.show()