当前位置: 首页 > 知识库问答 >
问题:

在火花中读取csv时防止分隔符碰撞

公孙辰龙
2023-03-14
     val header = collisionsRDD.first 

     case class Collision (date:String,time:String,borogh:String,zip:String,
      onStreet:String,crossStreet:String,                                  
      offStreet:String,numPersInjured:Int,
      numPersKilled:Int,numPedesInjured:Int,numPedesKilled:Int,
      numCyclInjured:Int,numCycleKilled:Int,numMotoInjured:Int)   


     val collisionsPlat = collisionsRDD.filter(h => h != header).
                map(x => x.split(",").map(x => x.replace("\"","")))

     val collisionsCase = collisionsPlat.map(x => Collision(x(0),
                                x(1), x(2), x(3),                  
                                x(8), x(9), x(10),
                                x(11).toInt,x(12).toInt,
                                x(13).toInt,x(14).toInt,
                                x(15).toInt,x(16).toInt,
                                x(17).toInt))
     collisionsCase.take(5)                                                  

如何捕捉此字段中的而不将其视为CSV分隔符?

共有1个答案

林修真
2023-03-14

使用spark-csv读取文件,因为它启用了quote选项

对于Spark 1.6:

sqlContext.read.format("com.databticks.spark.csv").load(file)

或者对于火花2:

spark.read.csv(file)
$ cat abc.csv
a,b,c
1,"2,3,4",5
5,"7,8,9",10

scala> case class ABC (a: String, b: String, c: String)

scala> spark.read.option("header", "true").csv("abc.csv").as[ABC].show
+---+-----+---+
|  a|    b|  c|
+---+-----+---+
|  1|2,3,4|  5|
|  5|7,8,9| 10|
+---+-----+---+
 类似资料:
  • 我想用Apache Spark读入具有以下结构的文件。 csv太大了,不能使用熊猫,因为读取这个文件需要很长时间。有什么方法类似于 多谢!

  • 问题内容: 我有一个CSV文件,其格式如下: “ FieldName1”,“ FieldName2”,“ FieldName3”,“ FieldName4” “ 04/13/2010 14:45:07.008”,“ 7.59484916392”,“ 10”,“ 6.552373” “ 04/13/2010 14:45:22.010 ”,“ 6.55478493312”,“ 9”,“ 3.53785

  • 我使用以下方法将csv文件读入Spark: df=spark.read.format(file_type).options(header='true',quote='\"',ignoreleadingwhitespace='true',inferschema='true').load(file_location) 这是正常行为还是读错了? 更新:我将标记问题作为回答,因为下面的提示是有用的。然而,

  • 我正在运行以下scala代码: 我知道firstStruct是structType,StructFields的一个名称是“name”,但在尝试强制转换时似乎失败了。我被告知spark/hive结构与scala不同,但为了使用structType,我需要 所以我想他们应该是同一种类型的。 我看了看这里:https://github.com/apache/spark/blob/master/sql/c

  • 试图读取一个空的镶木地板目录,得到这个错误 无法指定拼花地板的架构。必须手动指定 我的代码 尝试处理scala尝试和定期检查空目录 任何想法

  • 我有一个豆荚,里面有一些可怕的、有缺陷的软件。Kubernetes很棒的一个原因是,它会在软件崩溃时重新启动,这太棒了。 库伯内特斯是为好软件而设计的,而不是糟糕的软件,所以它在重启吊舱时会以指数级退避。这意味着我必须在崩溃之间等待五分钟才能重启吊舱。 有什么方法可以限制kubernetes的退避策略吗?我想把它改为在再次启动吊舱之前不要等待超过30秒。