我有一个包含近600列的庞大数据集,但是,当我尝试创建DF时,它失败了
Exception in thread "main" java.lang.ClassFormatError: Too many arguments in method signature in class file
示例代码:
def main(args: Array[String]): Unit = {
val data = sc.textFile(file);
val rd = data.map(line => line.split(",")).map(row => new Parent(row(0), row(1), ........row(600)))
rd.toDF.write.mode("append").format("orc").insertInto("Table")
}
有人可以帮忙解决此问题吗?
答案 0 :(得分:2)
我认为Java对象的最大方法参数存在限制,因此也扩展到Scala对象。具有600个参数的人员类是不可行的。
最理想的解决方案是将csv本身读为:
spark.read.csv(filePath)
此外,您可以选择使用签名增加maxColumns选项。
spark.read.options().csv()
虽然它不会直接影响您的用例,但max-columns设置为20480.可以找到有关这些参数的更多信息here。