как сохранить фрейм данных в Mongodb в спарк, используя пользовательское значение для столбца _id - PullRequest
0 голосов
/ 06 января 2020
val transctionSchema = StructType(Array(
      StructField("School_id", StringType, true),
      StructField("School_Year", StringType, true),
      StructField("Run_Type", StringType, true),
      StructField("Bus_No", StringType, true),
      StructField("Route_Number", StringType, true),
      StructField("Reason", StringType, true),
      StructField("Occurred_On", DateType, true),

      StructField("Number_Of_Students_On_The_Bus", IntegerType, true)))
 val dfTags = sparkSession.read.option("header", true).schema(transctionSchema).
      option("dateFormat", "yyyyMMddhhmm")
      .csv("src/main/resources/9_bus-breakdown-and-delays_case_study.csv").
      toDF("School_id", "School_Year", "Run_Type", "Bus_No", "Route_Number", "Reason", "Occurred_On", "Number_Of_Students_On_The_Bus")

    import sparkSession.implicits._

    val writeConfig = WriteConfig(Map("collection" -> "bus_Details", "writeConcern.w" -> "majority"), Some(WriteConfig(sparkSession)))
    dfTags.show(5)

У меня есть фрейм данных со столбцом: School_id / School_year / Run_Type / Bus_No / Route_No / Reason / Occured_on. Я хочу сохранить эти данные в пн go коллекция БД bus_Details , чтобы _id в пн go коллекция содержала данные из School_id столбца данных Frame.

Я видел пост, в котором предлагалось определить коллекцию как: Но она не работает

properties: {
         School_id: {
            bsonType: "string",
            id:"true"
            description: "must be a string and is required"
         }

Пожалуйста, помогите ..

1 Ответ

0 голосов
/ 17 января 2020

Вы можете создать дубликаты имен столбцов как _id в вашем фрейме данных, например:

val dfToSave = dfTags.withColumn("_id", $"School_id")

И затем сохранить это в mongodb

...