Spark SQL中的java.lang.StackOverflowError

时间:2014-08-14 23:37:56

标签: apache-spark

尝试从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)

1 个答案:

答案 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,而不是运行时,   当然),通常使用大型构造(大型阵列,大型   表达...)。这可能适用于您的情况,也可能不适用于您的情况,仅供参考。