我正在尝试使用以下Java API将具有约100万条记录的json文件导入MongoDb,并且我正在获取Java.lang.OutOfMemoryError:Java堆空间。我尝试在eclipse设置中增加Java堆空间,但仍然遇到相同的错误。如果json中的总记录少于500k,则程序运行正常,没有任何问题。但是,一旦json文档中的记录超过60万,我就会收到此错误。我能够从命令提示符通过mongoimport导入相同的json文件,而没有任何问题。谁能帮助我修复此程序,以便我可以使用Java应用程序将大数据集导入mongo。
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase database = client.getDatabase("Sample");
MongoCollection<Document> collection = database.getCollection("Sample_690000");
int count = 0;
int batch = 10000;
List<InsertOneModel<Document>> docs = new ArrayList<>();
try(BufferedReader br = new BufferedReader(
new FileReader("C:\\\\CsvFiles\\SampleDataJSON690000.json"))) {
String line;
while((line = br.readLine()) != null) {
Document document = Document.parse(String.format("{\"a\": %s}", line));
for(Document doc : (ArrayList<Document>)document.get("a")) {
docs.add(new InsertOneModel<>(doc));
count++;
}
if(count == batch) {
collection.bulkWrite(docs, new BulkWriteOptions().ordered(false));
docs.clear();
count = 0;
}
}
}
if(count > 0) {
collection.bulkWrite(docs, new BulkWriteOptions().ordered(false));
}