AWS EC2 Spark / Hadoop集群。
以下baisc K-Means sparklyr代码与Spark 2.0.1一起使用
kmeans_model <- iris_tbl %>%
select(Petal_Width, Petal_Length) %>%
ml_kmeans(centers = 3)
我已升级到Spark 2.1.1,我收到此错误
Error: java.lang.IllegalArgumentException: Field "features" does not exist.
at org.apache.spark.sql.types.StructType$$anonfun$apply$1.apply(StructType.scala:264)
at org.apache.spark.sql.types.StructType$$anonfun$apply$1.apply(StructType.scala:264)
...
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
我用代码做了一些测试
kmeans_model <- iris_tbl %>%
select(Petal_Width, Petal_Length) %>%
ml_kmeans(k = 3, features = c("Petal_Length", "Petal_Width"))
要么
kmeans_model <- iris_tbl %>%
dplyr::select(Petal_Width, Petal_Length) %>%
ml_kmeans(centers = 3, features = c("Petal_Length", "Petal_Width"))
但仍然得到同样的错误。
此代码在Spark 2.0中不起作用,就像它在更新版本中无法使用一样。此代码的应用程序不正确,与Spark版本无关。默认情况下ml_kmeans
(和其他ml_*
函数),期望Vector
类型列名为features
。 features
可以用来覆盖名称,应该是:
长度为一的字符向量
在不使用ft_vector_assembler
的情况下,唯一可以使其工作的方法是提供formula
:
kmeans_model <- iris_tbl %>%
ml_kmeans(formula= ~ Petal_Width + Petal_Length, k = 3)