Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加载带有损坏列的CSV数据集?_Csv_Apache Spark - Fatal编程技术网

如何加载带有损坏列的CSV数据集?

如何加载带有损坏列的CSV数据集?,csv,apache-spark,Csv,Apache Spark,我已将客户端数据库导出到csv文件,并尝试使用以下方法将其导入Spark: spark.sqlContext.read .format("csv") .option("header", "true") .option("inferSchema", "true") .load("table.csv") 在做了一些验证之后,我发现一些ID是null,因为列有时有回车符。这使得接下来的所有列都错位,产生了多米诺效应,破坏了所有数据 奇怪的是,调用printSchema时,生成的表结构

我已将客户端数据库导出到csv文件,并尝试使用以下方法将其导入Spark:

spark.sqlContext.read
  .format("csv")
  .option("header", "true")
  .option("inferSchema", "true")
  .load("table.csv")
在做了一些验证之后,我发现一些ID是
null
,因为列有时有回车符。这使得接下来的所有列都错位,产生了多米诺效应,破坏了所有数据

奇怪的是,调用
printSchema
时,生成的表结构很好


如何解决此问题?

您似乎很幸运地使用了
inferSchema
,它工作得很好(因为它只读取很少的记录来推断模式),因此
printSchema
会给您一个正确的结果


由于CSV导出文件已损坏,并且假设您希望使用Spark处理该文件(例如给定其大小),请使用
textFile
读取该文件并修复ID。将其保存为CSV格式并重新加载。

我不确定您使用的是spark的哪个版本,但从2.2开始(我相信),有一个“多行”选项可用于将具有换行符的字段保持在一起。从我读到的其他一些东西来看,您可能需要应用一些引用和/或转义字符选项,以使其按照您想要的方式工作

spark.read
  .csv("table.csv")
  .option("header", "true")
  .option("inferSchema", "true")
  **.option("multiLine", "true")**

请提供您的数据样本(输入和输出),突出您的问题。您需要返回导出源并从那里开始工作。Spark不能优雅地处理这个问题。不幸的是,你是对的,在导入阶段没有办法解决这个问题。