我的星火據幀(從蜂巢表創建)看起來像:如何在Scala udf中使用字符串數組作爲參數?
+------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|racist|filtered |
+------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|false |[rt, @dope_promo:, crew, beat, high, scores, fugly, frog, , https://time.com/sxp3onz1w8] |
|false |[rt, @axolrose:, yall, call, kermit, frog, lizard?, , https://time.com/wdaeaer1ay] |
,我試圖從篩選字段中移除的網址。
我曾嘗試:
val regex = "(https?\\://)\\S+".r
def removeRegex(input: Array[String]) : Array[String] = {
regex.replaceAllIn(input, "")
}
val removeRegexUDF = udf(removeRegex)
filteredDF.withColumn("noURL", removeRegexUDF('filtered)).show
這給這個錯誤:
<console>:60: error: overloaded method value replaceAllIn with alternatives:
(target: CharSequence,replacer: scala.util.matching.Regex.Match => String)String <and>
(target: CharSequence,replacement: String)String
cannot be applied to (Array[String], String)
regex.replaceAllIn(input, "")
^
我在斯卡拉很大程度上是一個新手,所以任何指導,您可以就如何處理在過濾後陣列給udf非常感謝。 (或者如果有更好的方法做到這一點,我很高興聽到它)。
您的輸入是一個字符串數組,但該方法只需要一個字符串,其中每個正則表達式的出現都被替換。 – Secespitus
這不是真的與spark相關,而是純粹的scala問題 –