Spark: "tronqué la représentation sous forme de chaîne d'un plan car il était trop grand." Avertissement lors de l'utilisation de l'expression d'agrégation créée manuellement
Je suis en train de construire pour chacun de mes utilisateurs un vecteur contenant le nombre moyen de dossiers par heure de la journée. D'où le vecteur a 24 dimensions.
Mon original DataFrame a userID
et hour
colonnes, andI je commence par faire un groupBy
et compter le nombre d'enregistrement par l'utilisateur par heure comme suit:
val hourFreqDF = df.groupBy("userID", "hour").agg(count("*") as "hfreq")
Maintenant, afin de générer un vecteur par utilisateur, je suis en train de faire le suivi, basé sur la première suggestion dans cette réponse.
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: _*))
Quand je lance cet exemple, j'obtiens le message d'avertissement suivant:
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.
Je présume que c'est parce que l'expression est trop long?
Ma question est: puis-je ignorer cet avertissement?
source d'informationauteur Rami
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'ignorer, si vous n'êtes pas intéressé à voir le schéma sql journaux. Sinon, vous pouvez définir la propriété à une valeur supérieure, mais cela pourrait affecter les performances de votre travail:
Valeur par défaut est:
DEFAULT_MAX_TO_STRING_FIELDS = 25
Prises à partir de: https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/util/Utils.scala#L90