Scala SnappyData Spark Scall java.sql.BatchUpdateException

Scala SnappyData Spark Scall java.sql.BatchUpdateException,scala,apache-spark,memory,size,snappydata,Scala,Apache Spark,Memory,Size,Snappydata,因此,我有大约35 GB的zip文件,每个文件包含15个csv文件,我创建了一个scala脚本,它处理每个zip文件和每个zip文件的每个csv文件 问题是,在一些文件之后,脚本会终止此错误 错误执行者:阶段114.0(TID 3145)中任务0.0中的异常 java.io.IOException:java.sql.BatchUpdateException:(Server=localhost/127.0.0.1[1528]Thread=pool-3-Thread-63)XCL54.T:[0]插

因此,我有大约35 GB的zip文件,每个文件包含15个csv文件,我创建了一个scala脚本,它处理每个zip文件和每个zip文件的每个csv文件

问题是,在一些文件之后,脚本会终止此错误


错误执行者:阶段114.0(TID 3145)中任务0.0中的异常 java.io.IOException:java.sql.BatchUpdateException:(Server=localhost/127.0.0.1[1528]Thread=pool-3-Thread-63)XCL54.T:[0]插入密钥[7243901,7243902


字符串将继续显示所有未插入的键(记录)

所以我发现很明显(我说这显然是因为我对scala、snappy和spark缺乏了解)所使用的内存已经满了…我的问题是…如何增加所使用内存的大小?或者如何清空内存中的数据并将其保存在磁盘中

我可以关闭已启动的会话并以这种方式释放内存吗? 我不得不重新启动服务器,删除已处理的文件,然后我可以继续导入,但在一些其他文件之后…再次…相同的例外

我的csv文件很大…最大的一个大约为1 GB,但这种异常情况不仅发生在大文件上,而且发生在累积多个文件时…直到达到某个大小…那么我在哪里更改内存使用大小


我有12GB RAM…

您可以使用RDD持久性和存储到磁盘/内存或以下组合:


另外,在读取文件时尝试添加大量分区:
sc.textFile(path,200000)

我认为您的可用内存不足。异常消息具有误导性。如果您的计算机上只有12GB内存,我想知道您的数据是否适合。 我要做的是首先弄清楚你需要多少记忆

 1. Copy conf/servers.template to conf/servers file
 2) Change this file with something like this: localhost -heap-size=3g
    -memory-size=6g //this essentially allocates 3g in your server for computations    (spark, etc) and allocates 6g of off-heap memory for your data    (column tables only).  
3) start your cluster using snappy-start-all.sh 
4) Load some subset of your data  (I doubt you have enough memory) 
5) Check the memory used in the SnappyData Pulse UI (localhost:5050)
如果您认为您有足够的内存,请加载完整的数据


希望能成功。

BatchUpdateException告诉我您正在创建Snappy表并在其中插入数据。此外,在大多数情况下,BatchUpdateException意味着内存不足(异常消息需要更好)。因此,我相信您对内存的看法可能是正确的。要释放内存,您必须删除您创建的表。有关内存大小和表大小的信息,您可能需要阅读以下文档:

此外,如果有大量数据无法放入内存,则可以将其溢出到磁盘。有关溢出配置,请参阅以下文档:


希望能有所帮助。

您好,谢谢,是的,我知道我的数据无法存储在内存中,总量约为300+GB…因此这里的问题是如何首先增加内存以处理每个csv(大于1 GB)没有任何问题,将数据存储在磁盘中或与内存结合。我已经找到了有关RDD持久性的信息,我想这是我解决方案的一部分,但如何/在哪里配置它?感谢我已经在配置它们的提示…和…测试。。。