我想通過在列數爲200+的Scala程序中創建RDD來創建Spark SQL表。編譯(SBT編譯)失敗,java.lang.StackOverflowError的例外,當我創建我的架構爲:Spark SQL表最大列數
StructField("RT", StringType,nullable = true) ::
StructField("SERIALNO", StringType,nullable = true) ::
StructField("SPORDER", StringType,nullable = true) ::
// ... remaining 200+ columns
無法粘貼堆棧跟蹤,因爲它是超過1.5K線
在減少列數大約100-120編譯成功。另外,當我使用模式字符串創建模式(拆分模式字符串,然後創建它的映射)時,編譯成功(在標題爲「以編程方式指定模式」https://spark.apache.org/docs/1.3.0/sql-programming-guide.html中的第一個示例)。
什麼似乎是手動指定架構導致異常的問題?
在你的錯誤堆棧創建一個要點,並把它添加到問題,請!你的問題是不可挽救的,因爲它是現在和相當廣泛,很明顯,它會被投票關閉 – eliasah
我猜自動模式檢測使用遞歸,它是'tailrec'。我會在Spark JIRA上發佈一個問題。 – Reactormonk
@Reactormonk無需報告。這是一個斯卡拉「問題」,而不是Spark問題。見下文。 – DemetriKots