在MongoDB中插入大数据

时间:2018-08-18 11:24:19

标签: mongodb

我测试过将一个小文件加载到MongoDB集合中。我使用Mongo-Spark Connector编写的代码。我已在MongoDB中加载并附加了JSON文件,该文件成功了,因为测试文件小于16 MB。 JSON文件如下所示: here

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import com.mongodb.spark._
import org.apache.spark.sql.hive.HiveContext
import org.bson.Document
import org.bson.Document._
import org.bson._
import org.bson.types.ObjectId
import jdk.nashorn.internal.ir.annotations.Ignore

import com.mongodb.casbah.MongoCollection
//import com.mongodb.casbah.MongoConnection
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.gridfs.Imports._

import java.io.File
import java.io.FileInputStream
import com.mongodb.spark.config._

,代码段为:

val df = sparksessionobject.read.json("D:/split_json_part/part1_final/part-00000.json").toDF() //Small size file
val writeConfig = MongoSpark.save(df.write.mode("append"), WriteConfig(Map("collection" -> "play"), Some(WriteConfig(sparksessionobject))))

这里是play集合视图: enter image description here

但问题已从此处开始:我们必须使用enter image description here在MongoDB数据库中加载大文件。 我有一个2.2 GB的JSON,并且已加载到MongoDB中。

val mongoColl = MongoConnection("192.168.70.13", 27017)
//val mongoClient = MongoClient("192.168.70.13", 27017)
val db = mongoColl("issuer")
val gridFS = GridFS(db)

val imageFile = new File("D:/split_json_part/part1_final/part-00000.json")
val fileInputStream=new FileInputStream(imageFile)

    val gfsFile=gridFS.createFile(fileInputStream)
    gfsFile.filename="part-00000.json"
    gfsFile.save()

文件已加载到数据库中,但是问题是我没有正确获取文档中的记录,数据以二进制形式出现,并且以后如何追加这些块?我不知道。 这是MongoDB数据库中2.2 GB fs.chunk的视图。 Casbah API

如何解决此问题? 我已经参考了以下链接:

  1. enter image description here
  2. https://mongodb.github.io/node-mongodb-native/api-generated/gridstore.html
  3. https://docs.mongodb.com/manual/core/gridfs/#when-to-use-gridfs
  4. https://github.com/mongodb/casbah

0 个答案:

没有答案