【问题标题】:sparklyr feature transformation functions result in errorsparklyr 特征转换函数导致错误
【发布时间】:2018-10-20 02:44:09
【问题描述】:

我在使用 sparklyr R 包中的 ft_.. 函数时遇到了一些问题。 ft_bucketizer 有效,但 ft_normalizer 或 ft_min_max_scaler 无效。这是一个例子:

library(sparklyr)
library(dplyr)
library(nycflights13)

sc <- spark_connect(master = "local", version = "2.1.0")
x = flights %>% select(dep_delay)
x_tbl <- sdf_copy_to(sc, x) 

# works fine
ft_binarizer(x=x_tbl, input.col = "dep_delay", output.col = "delayed", threshold = 0)

# error
ft_normalizer(x= x_tbl, input.col = "dep_delay", output.col = "delayed_norm")

# error
ft_min_max_scaler(x= x_tbl,input.col = "dep_delay",output.col = "delayed_min_max")

归一化器返回:

错误:org.apache.spark.SparkException:作业因阶段失败而中止:阶段 9.0 中的任务 0 失败 1 次,最近一次失败:阶段 9.0 中丢失任务 0.0(TID 9,本地主机,执行程序驱动程序):org .apache.spark.SparkException: 执行用户定义函数失败($anonfun$createTransformFunc$1: (double) => vector)"

min_max_scaler 返回:

“错误:java.lang.IllegalArgumentException:要求失败:列 dep_delay 必须是 org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7 类型,但实际上是 DoubleType。”

我认为是数据类型的问题,但不知道如何解决。有人知道该怎么做吗?

非常感谢!

【问题讨论】:

    标签: r apache-spark apache-spark-mllib sparklyr


    【解决方案1】:

    ft_normalizerVector 列上运行,因此您必须首先使用ft_vector_assembler

    ft_vector_assembler(x_tbl, input_cols="dep_delay", output_col="dep_delay_v") %>% 
      ft_normalizer(input.col = "dep_delay_v", output.col = "delayed_v_norm")
    

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 2017-08-31
      相关资源
      最近更新 更多