有一个带有一些分类字符串值的 DataFrame(例如 uuid|url|browser)。
我会将其转换为双精度以执行接受双矩阵的 ML 算法。
作为转换方法,我使用 StringIndexer (spark 1.4) 将我的字符串值映射到双精度值,所以我定义了一个这样的函数:
def str(arg: String, df:DataFrame) : DataFrame =
(
val indexer = new StringIndexer().setInputCol(arg).setOutputCol(arg+"_index")
val newDF = indexer.fit(df).transform(df)
return newDF
)
现在的问题是我将迭代 df 的 foreach 列,调用此函数并在解析的双列中添加(或转换)原始字符串列,因此结果将是:
初始df:
[String: uuid|String: url| String: browser]
最终df:
[String: uuid|Double: uuid_index|String: url|Double: url_index|String: browser|Double: Browser_index]
提前致谢