0

我有一個要求,在運行算法前預處理火花中的數據 其中一個預處理邏輯是從文本中刪除停用詞。我試着用Spark StopWordsRemover。 StopWordsRemover要求輸入和輸出應該是Array [String]。運行程序後,最終的列輸出顯示爲字符串集合,我會需要一個純字符串。如何在火花預處理中刪除文本中的停用詞

我的代碼如下。

val tokenizer: RegexTokenizer = new RegexTokenizer().setInputCol("raw").setOutputCol("token") 
val stopWordsRemover = new StopWordsRemover().setInputCol("token").setOutputCol("final") 
stopWordsRemover.setStopWords(stopWordsRemover.getStopWords ++ customizedStopWords) 
val tokenized: DataFrame = tokenizer.transform(hiveDF) 
val transformDF = stopWordsRemover.transform(tokenized) 

實際輸出

["rt messy support need help with bill"] 

所需的輸出:

rt messy support need help with bill 

我的輸出應該是這樣的字符串而不是作爲字符串的數組。有沒有辦法做到這一點。我需要數據框中列的輸出作爲字符串。

此外,我需要建議以下選項從火花程序中的文本中刪除停用詞。從SparkMlib

  • 斯坦福CoreNLP圖書館

    1. StopWordsRemover。

    哪個選項在解析大文件時可以提供更好的性能。

    任何幫助表示讚賞。

    在此先感謝。

  • 回答

    0

    您可以使用它來獲取字符串而不是數組的字符串 - df.collect()[0] - 如果您確定只有第一個項目符合您的興趣。

    但是,只要遍歷數組並獲取每個項目,這裏就不應該有任何問題。

    最終,HiveDF會爲您提供RDD [String] - 並且當您從RDD轉換時它將變成Array [String]。