Apache Spark самая короткая работа scala - PullRequest
2 голосов
/ 06 апреля 2020

Я новичок в программировании Apache Spark и scala. Я пишу код в scala, используя apache spark api docs. Моя цель - создать граф, развернуть объекты и вычислить кратчайший путь. Я написал программу для создания файла CSV объекта, который я хочу использовать. Он состоит из идентификатора транспортного средства, источника, пункта назначения. Это выглядит следующим образом:

[My sample csv file][1]


  [1]: https://i.stack.imgur.com/KtSVz.png

Мой код для создания CSV-файла

import java.io.BufferedWriter
import java.io.FileWriter

import scala.collection.JavaConverters._
import scala.collection.mutable.ListBuffer
import scala.util.Random
import au.com.bytecode.opencsv.CSVWriter

import scala.collection.mutable

class MakeCSV() {
  def csvBuilder(dx:Int){
    val outputfile= new BufferedWriter(new FileWriter("vehicles.csv"))
    val csvWriter= new CSVWriter(outputfile)
    val csvFields= Array("Vehicle-id","Source","Destination")
    val vehicleID=(0 to dx).toList
    val sourceList=mutable.MutableList[String]()
    val destinationList=mutable.MutableList[String]()
    var i,sx,sy,dsx,dsy=0
    for(i<-0 to dx){
      sx=Random.nextInt(dx)
      sy=Random.nextInt(dx)
      dsx=Random.nextInt(dx)
      dsy=Random.nextInt(dx)
      sourceList.+=((sx,sy).toString())
      destinationList.+=((dsx,dsy).toString())
    }
    var listOfRecords = new ListBuffer[Array[String]]()
    listOfRecords += csvFields
    for (i<- 0 to dx){
      listOfRecords+=Array(i.toString,sourceList(Random.nextInt(sourceList.length)),destinationList(Random.nextInt(destinationList.length)))
    }
    csvWriter.writeAll(listOfRecords.asJava)
    csvWriter.close()
  }
}

Мой основной файл:

import java.io.PrintWriter

import scala.io.StdIn
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.graphx.Graph
import org.apache.spark.graphx.util.GraphGenerators
object MainFile {
  def main(args:Array[String]):Unit={

//    Vehicle CSV file Generation
    println("Enter the number of cars")
    val input=StdIn.readInt()
    val makecsv= new MakeCSV()
    makecsv.csvBuilder(input)

//   Spark Job Configuration
    val conf = new SparkConf().setAppName("DjikstraShortestPath")
    val sc= new SparkContext(conf)

//    Graph Generation
    println("Enter the number of rows for grid")
    val row= StdIn.readInt()
    println("Enter the number of columns for grid")
    val column = StdIn.readInt()
    val graph:Graph[(Int, Int), Double]=GraphGenerators.gridGraph(sc,row,column)

//    Vehicle File opening
//    For each Vehicle compute shortest path using source destination in csv file

  }
}

Теперь я хочу открыть этот CSV-файл и используя его источник и пункт назначения, я хочу вычислить кратчайший путь для каждого транспортного средства, используя график, сгенерированный выше. Может кто-нибудь мне помочь? Как открыть файл csv прочитайте его и найдите кратчайший путь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...