1

因此,我有大约 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 内存...

4

3 回答 3

1

您可以使用 RDD 持久性并存储到磁盘/内存或组合:https ://spark.apache.org/docs/2.1.0/programming-guide.html#rdd-persistence

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

于 2017-07-11T22:02:49.823 回答
1

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

http://snappydatainc.github.io/snappydata/best_practices/capacity_planning/#memory-management-heap-and-off-heap

http://snappydatainc.github.io/snappydata/best_practices/capacity_planning/#table-memory-requirements

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

http://snappydatainc.github.io/snappydata/best_practices/design_schema/#overflow-configuration

希望能帮助到你。

于 2017-07-12T04:24:07.130 回答
1

我认为您的可用内存不足。异常消息具有误导性。如果您的机器上只有 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)

如果您认为自己有足够的内存,请加载完整数据。

希望这行得通。

于 2017-07-11T23:01:57.253 回答