Scala Spark不读取忽略第一行标题并从第二行开始加载所有数据



我在AWS EMR集群上有一个Scala Spark笔记本,它从AWS S3存储桶加载数据。以前,我有如下标准代码:

var stack = spark.read.option("header", "true").csv("""s3://someDirHere/*""")

这将多个文件目录(.txt.gz(加载到名为stack的Spark DataFrame对象中。

最近,有新文件添加到此目录中。新文件的内容看起来是一样的(我下载了几个文件,并使用Sublime Text和Notepad++打开了它们(。我尝试了两个不同的文本编辑器,看看是否有一些看不见的非unicode字符扰乱了第一行作为标题的解释。新的数据文件导致上面的代码忽略第一行标题,而将第二行解释为标题。我尝试了一些变体,但没有运气,下面是我尝试的几个例子:

var stack = spark.read.option("quote", """).option("header", "true").csv("""s3://someDirHere/*""") // header not detected
var stack = spark.read.option("escape", """).option("header", "true").csv("""s3://someDirHere/*""") // header not detected
var stack = spark.read.option("escape", """).option("quote", """).option("header", "true").csv("""s3://someDirHere/*""") // header not detected

我希望我能分享这些文件,但其中包含机密信息。只是想知道是否有一些我可以尝试的想法。

有多少个文件?如果手动检查太多,您可以尝试在没有页眉选项的情况下阅读它们。你的期望是头球在任何地方都匹配,对吧?

如果真的是这样的话,应该有一个计数1:

spark.read.csv('path').limit(1).dropDuplicates().count()

如果不是这样,你可以看到有什么不同的标题

spark.read.csv('path').limit(1).dropDuplicates().show()

记住不要使用标题选项很重要,这样你就可以对它进行操作

最新更新