首先,让我们分别定义几个由dfString
和dfDouble
组成的Spark数据帧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不是 支撑。
问题是:如何在保持管道框架内的同时从双打中获得与字符串相同的结果?
请注意,这不是Concatenate columns in apache spark dataframe的重复,因为
我想只使用变换器进入管道框架
并且我不想使用
StringIndexer
变压器。
我正在使用Spark 1.6。