首先,让我们定义几个 Spark 数据帧dfString
,它们dfDouble
分别由以下各项strings
组成doubles
:
val dfString = sqlContext.createDataFrame(Seq(("a1", "b1", "c1"), ("a2", "b2", "c2"))).toDF("colx", "coly", "colz")
val dfDouble = sqlContext.createDataFrame(Seq((0.0, 1.0, 2.0), (3.0, 4.0, 5.0))).toDF("colx", "coly", "colz")
其次,我们准备一个由单个变压器组成的管道:
val va = new VectorAssembler().setInputCols(Array("colx", "coly", "colz")).setOutputCol("ft")
val pipeline = new Pipeline().setStages(Array(va))
安装此管道dfDouble
将返回预期结果,其中所有列都连接成一个名为ft
. 但是pipeline.fit(dfString)
抛出
java.lang.IllegalArgumentException:不支持数据类型 StringType。
问题是:如何在保持管道框架内的同时获得与从双打中获得的字符串相同的结果?
请注意,这不是apache spark 数据框中的 Concatenate 列的副本,因为
我只想使用转换器进入管道框架
而且我不想使用
StringIndexer
变压器。
我正在使用 Spark 1.6。