2017-05-31 3 views
0

Ich benutze Apache Spark 2, um etwas Text zu tokenisieren.Erhalten Sie eindeutige Wörter von Spark Dataset in Java

Dataset<Row> regexTokenized = regexTokenizer.transform(data); 

Es gibt Array of String zurück.

Dataset<Row> words = regexTokenized.select("words"); 

Beispieldaten sieht so aus.

+--------------------+ 
|    words| 
+--------------------+ 
|[very, caring, st...| 
|[the, grand, cafe...| 
|[i, booked, a, no...| 
|[wow, the, places...| 
|[if, you, are, ju...| 

Jetzt möchte ich alle eindeutigen Wörter bekommen. Ich habe ein paar Filter ausprobiert, flatMap, Kartenfunktionen und reduziere. Ich konnte es nicht herausfinden, weil ich neu im Spark bin.

Antwort

1

Ich komme aus Scala, aber ich glaube, dass es in Java einen ähnlichen Weg gibt.

Ich denke in diesem Fall müssen Sie die explode Methode verwenden, um Ihre Daten in eine Dataset von Wörtern umzuwandeln.

sollten Dieser Code Sie die gewünschten Ergebnisse:

import org.apache.spark.sql.functions.explode 
val dsWords = regexTokenized.select(explode("words")) 
val dsUniqueWords = dsWords.distinct() 

Für die Methode explodieren Informationen über official documentation

zum finden Sie Hoffe, es hilft.

1

basierend auf der Antwort @Haroun Mohammedi, konnte ich es in Java herausfinden.

Dataset<Row> uniqueWords = regexTokenized.select(explode(regexTokenized.col("words"))).distinct(); 
uniqueWords.show();