Spark SQL堆栈溢出



我是spark和spark sql的新手,我试图在spark sql网站上做一个例子,在从JSON文件目录加载模式和数据后,只做一个简单的sql查询,如下所示:

import sqlContext.createSchemaRDD
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val path = "/home/shaza90/Desktop/tweets_1428981780000"
val tweet = sqlContext.jsonFile(path).cache()
tweet.registerTempTable("tweet")
tweet.printSchema() //This one works fine

val texts = sqlContext.sql("SELECT tweet.text FROM tweet").collect().foreach(println) 

我得到的例外是:

java.lang.StackOverflowError
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:254)
at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:222)

更新

我可以执行select * from tweet,但每当我使用列名而不是*时,就会出现错误。

有什么建议吗?

这是SPARK-5009,已在Apache SPARK 1.3.0中修复。

问题是,为了在任何情况下识别关键字(如SELECT),所有可能的大小写组合(如seLeCT)都是在递归函数中生成的。如果关键字足够长,堆栈大小足够小,这种递归将导致您看到的StackOverflowError。(这表明,如果不能升级到Apache Spark 1.3.0或更高版本,可以使用-Xss来增加JVM堆栈大小作为解决方法。)

相关内容

  • 没有找到相关文章

最新更新