我已将客户端数据库导出到csv文件,并尝试使用以下命令将其导入Spark:
spark.sqlContext.read
.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load("table.csv")
在做了一些验证之后,我发现有些ID是null
,因为列有时会有回车符。并且这会使所有下一个列脱臼,产生多米诺骨牌效应,破坏所有数据。
奇怪的是,在调用printSchema
时,生成的表结构很好。
如何解决问题?
答案 0 :(得分:3)
你似乎很幸运inferSchema
它运行正常(因为它只读取少量记录来推断架构),所以printSchema
会给你一个正确的结果。
由于CSV导出文件已损坏,并且假设您要使用Spark处理文件(例如,根据其大小),请使用textFile
读取它并修复ID。将其另存为CSV格式并加载回来。
答案 1 :(得分:0)
我不确定你使用的是什么版本的火花,但是从2.2(我相信)开始,有一个多线路'可用于将字段保持在一起的选项,其中包含换行符。从我读过的其他一些内容中,您可能需要应用一些引用和/或转义字符选项,以使其按照您的需要运行。
spark.read
.csv("table.csv")
.option("header", "true")
.option("inferSchema", "true")
**.option("multiLine", "true")**