相关疑难解决方法(0)

Spark:"截断了计划的字符串表示,因为它太大了." 使用手动创建的聚合表达式时发出警

我正在尝试为每个用户构建一个包含每小时每小时平均记录数的向量.因此,矢量必须具有24维.

我的原始DataFrame有userIDhour列,我开始做一个groupBy并计算每个用户每小时的记录数,如下所示:

val hourFreqDF = df.groupBy("userID", "hour").agg(count("*") as "hfreq")
Run Code Online (Sandbox Code Playgroud)

现在,为了根据答案中的第一个建议,我按照每个用户生成一个向量.

val hours = (0 to 23 map { n => s"$n" } toArray)

val assembler = new VectorAssembler()
                     .setInputCols(hours)
                     .setOutputCol("hourlyConnections")

val exprs = hours.map(c => avg(when($"hour" === c, $"hfreq").otherwise(lit(0))).alias(c))

val transformed = assembler.transform(hourFreqDF.groupBy($"userID")
                           .agg(exprs.head, exprs.tail: _*))
Run Code Online (Sandbox Code Playgroud)

当我运行此示例时,我收到以下警告:

Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf.
Run Code Online (Sandbox Code Playgroud)

我认为这是因为表达太长了?

我的问题是:我能安全地忽略这个警告吗?

apache-spark spark-dataframe

31
推荐指数
2
解决办法
3万
查看次数

标签 统计

apache-spark ×1

spark-dataframe ×1