尝试从Spark 1.0.2运行示例程序 spark-submit --class org.apache.spark.examples.sql.RDDRelation --master local \ spark-1.0.2-bin-hadoop1 \ lib \ spark-examples-1.0.2-hadoop1.0.4.jar
代码尝试在表上选择时出现异常: - sql(" SELECT * FROM records")。collect()。foreach(println)
线程中的异常" main" java.lang.StackOverflowError的 在scala.util.parsing.combinator.Parsers $$ anon $ 3.apply(Parsers.scala:222) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $$ anon $ 3.apply(Parsers.scala:222) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $$ anon $ 3.apply(Parsers.scala:222) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $ Parser $$ anonfun $ append $ 1.apply(Parsers.scala:254) 在scala.util.parsing.combinator.Parsers $$ anon $ 3.apply(Parsers.scala:222)
答案 0 :(得分:0)
发生StackOverflow是因为应用程序过于冗长。 see details.
您是否增加了RDD大小?或者对示例代码做了任何其他更改?
最初的一个例子是仅包含100条记录。
val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_$i")))
所以,你得到一个没有改变源的StackOverflowError真的很奇怪。
另一方面,你可以在编译时找到关于Scala StackOverflowError的old reference,万一它可以与编译器本身相关。
这种崩溃有很多原因。我遇到过这样的问题 在我的一个程序中: http://comments.gmane.org/gmane.comp.lang.scala.user/35292我正在使用 错误的构造(好吧,它没关系,但不适合大型列表)。 我刚搜索了#34; StackOverflow"在这个邮件的主题行 列出并发现了一些类似的情况(即scalac中的SO,而不是运行时, 当然),通常使用大型构造(大型阵列,大型 表达...)。这可能适用于您的情况,也可能不适用于您的情况,仅供参考。