Как читать CSV с кавычками, используя sparkcontext - PullRequest
0 голосов
/ 24 декабря 2018

Я недавно начал использовать scala spark, в частности, я пытаюсь использовать GraphX ​​для создания графика из CSV.Чтобы прочитать CSV-файл с искровым контекстом, я всегда делаю это:

val rdd = sc.textFile("file/path")
   .map(line => line.split(","))

Таким образом, я получаю СДР объектов Array [String].Моя проблема состоит в том, что файл csv содержит строки, разделенные кавычками ("") и числом без кавычек, пример некоторых строк внутри файла следующий:

"Luke",32,"Rome"
"Mary",43,"London"
"Mario",33,"Berlin"   

Если я использую метод split (", ") Я получаю объекты String, которые внутри содержат кавычки, например, строка Luke сохраняется как" Luke ", а не как Luke.Как я могу сделать, чтобы не учитывать кавычки и сделать правильные строковые объекты?Я надеюсь, что мне было ясно объяснить мою проблему

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Попробуйте с приведенным ниже примером.

import org.apache.spark.sql.SparkSession
object DataFrameFromCSVFile {

  def main(args:Array[String]):Unit= {

    val spark: SparkSession = SparkSession.builder()
      .master("local[1]")
      .appName("SparkByExample")
      .getOrCreate()

    val filePath="C://zipcodes.csv"

    //Chaining multiple options
    val df2 = spark.read.options(Map("inferSchema"->"true","sep"->",","header"->"true")).csv(filePath)
    df2.show(false)
    df2.printSchema()

  }
}
0 голосов
/ 24 декабря 2018

вы можете позволить анализатору CSV уровня Spark DataFrame решить, что для вас

val rdd=spark.read.csv("file/path").rdd.map(_.mkString(",")).map(_.split(","))

, кстати, вы можете преобразовать строку непосредственно в VertexId (String, String) в первой карте на основеПоля строки

...