scala - scala 中案例类字段的最大数量是多少?

标签 scala apache-spark

以前是22,我听有人说现在是512了?那是对的吗?谁能提供一下来源。

最佳答案

在 Scala 2.11 中存在一个隐式限制,似乎如果您创建一个包含大约 100 个以上字段的案例类,则会出现堆栈溢出(请参见答案底部)。

增加字段数量(最多 254 个)的解决方法是

export SBT_OPTS="-XX:MaxPermSize=2G -Xmx2G -Xms2G -Xss8M"

如果您尝试任何高于 254 的值,您会得到

[error] /Users/sams/src/.../src/main/scala/com/MegaClass.scala:6:12: Platform restriction: a parameter list's length cannot exceed 254.
[error] case class MegaClass(

堆栈溢出错误:

[error] null
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transformSelect$1(SuperAccessors.scala:253)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:335)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:359)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:71)
...
[error] scala.reflect.internal.Trees$class.itransform(Trees.scala:1345)
[error] scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error] scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error] scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)
[error] scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.mayNeedProtectedAccessor$1(SuperAccessors.scala:186)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transformSelect$1(SuperAccessors.scala:332)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:335)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:359)
[error] scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:71)
[error] scala.reflect.internal.Trees$class.itransform(Trees.scala:1345)
[error]            
[error] java.lang.StackOverflowError
[error]     at scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:178)
[error]     at scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:359)
[error]     at scala.tools.nsc.typechecker.SuperAccessors$SuperAccTransformer.transform(SuperAccessors.scala:71)
[error]     at scala.reflect.internal.Trees$class.itransform(Trees.scala:1345)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
[error]     at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)

关于scala - scala 中案例类字段的最大数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492422/

相关文章:

scala - 当我尝试在 Spark 中运行字数统计示例时出现 java.lang.NoClassDefFoundError

scala - 如何注册UDF以在SQL和DataFrame中使用?

scala - Spark : grouping rows in array by key

scala - 使用谓词下推连接两个数据集

java - 在 Spark 中使用 JAVA RDD 添加文本文件的列

scala - 如何使用解析器组合器进行条件检查

scala - 从 sbt 运行 hprof

java - Spark 将数据集转换为 RDD

scala - 计算列表中的数字在 Scala 中的元组间隔列表中出现的次数

python - 如何将文件传递给主节点?