【问题标题】:Scala Spark not reading ignoring first line header and loading all data from 2nd line onwardsScala Spark 不读取忽略第一行标题并从第二行开始加载所有数据
【发布时间】:2020-10-30 06:27:16
【问题描述】:

我在 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

我希望我可以共享这些文件,但它包含机密信息。只是想知道是否有一些关于我可以尝试的想法。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    有多少个文件?如果手动检查太多,您可以尝试在没有标题选项的情况下阅读它们。您的期望是标题匹配无处不在吗?

    如果真的是这样,应该计数为 1:

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

    如果没有,您可以像这样看到有哪些不同的标题

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

    记住不要使用header选项很重要,所以你可以对其进行操作

    【讨论】:

    • 是的,大约有 150 个文件。假设是跨文件的标题是相同的,这就是它应该的样子。快速浏览工作文件和导致问题的文件表明列数及其名称是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2011-10-09
    • 2023-03-22
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多