0
我有一個類似於下面的數據:斯卡拉正則表達式UDF搶查詢參數值,並將其轉換爲以逗號分隔的列表
one=1&two=22222&three=&four=4f4
正如你所看到的,對於變量三值缺失。我想使用Scala正則表達式來獲取所有值並返回逗號分隔。
所需的輸出:
1,22222,,4f4
另一個更需要的話,可能的輸出:
1,22222,undefined,4f4
這是我當前的代碼(我用星火2.0斯卡拉的數據幀):
def main(args: Array[String]) {
...
val pattern : scala.util.matching.Regex = """[^&?]*?=([^&?]*)""".r
df.select(transform(pattern)($"data").alias("csvData")).take(100).foreach(println)
}
def transform(pattern: scala.util.matching.Regex) = udf(
(dataMapping: String) => pattern.findAllIn(dataMapping).toList
)
其中返回:
[WrappedArray(one=1, two=22222, three=, four=4f4)]
[WrappedArray(...)]
我認爲我可以在我的「transform」udf函數上做得更好,但我對Scala非常陌生,並且不確定如何匹配第一組並返回逗號分隔。我想我會在我的解決方案中使用類似m => m.group(1)的東西,但我不確定。謝謝你的建議。
有沒有辦法來剛纔的1,22222 ......在值列,而不是包括列名和=標誌? – satoukum
另外,如果數據幀有很多列,我如何指定我想要分割稱爲數據的列? – satoukum
@satoukum看我的編輯 –