提交35条以上语句后Livy获取堆栈溢出错误

问题描述

我正在尝试按livy POST api(/ sessions /:sessionId / statements)提交火花作业。但是,在提交35条以上的语句(一次至少发送10条)之后,Get语句将引发StackOverflow错误。开始新的会话后尝试过 下面是我的代码 POST / sessions /:sessionId / statements 请求正文:

{
 "code":"var df_20032_preview = SparkUtil.getorRead(\"PREVIEW\",\"df_20032_preview\",\"/20032/e46b411d225ea0463376b88c4f8ac927/Test.csv\",\"rO0ABXQABG51bGw=\",false,\"%2C\",\"%22\",\"'Test'!A1\",1);"
}

这是getorRead的逻辑

if (!DataframeMap.exists(dfName)) {
      val schema:Option[List[DFColumn]] = ???

      val read_odf =  session.read.format("csv")
        .option("header","true")
        .option("numPartitions",10)
        .option("quote",dqualifier)
        .option("delimiter",ddelimiter)
        .option("ignoreTrailingWhiteSpace",value = true)
        .option("multiLine",value = true)
        .option("inferSchema",value = infer)
        .load(fileLocation)

      val odf = read_odf
      val ocolumns = ("MAPIT_ROW_INDEX" +: odf.columns).map(x => s"`$x`")
      val odf1000 = addindex(odf).select(ocolumns.head,ocolumns.tail: _*)
      val idf1000 = odf1000

        DataframeMap.init(dfName,odf1000,idf1000,schema) //store in map
    }

    DataframeMap.get(dfName)._2

我正在传递相同的请求主体并提交多个语句,但是当我通过ID进行GET语句时,它始终会引发StackOverflow错误

{
    "id": 40,"code": "var df_20032_preview = MIS.getorRead(\"PREVIEW\",\"/e46b411d225ea0463376b88c4f8ac927/Test.csv\",1);","state": "available","output": {
        "status": "error","execution_count": 40,"ename": "Internal Error: java.lang.StackOverflowError","evalue": null,"traceback": []
    },"progress": 1.0
}

添加了我的DAG以供参考。

enter image description here

enter image description here

有人可以告诉我为什么我得到堆栈溢出错误吗?另外我在哪里可以看到检查堆栈跟踪的日志?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)