问题很奇怪。如果我使用未压缩的文件,则没有问题。但是,如果我使用压缩的 bz2 文件,我会得到一个索引越界错误。
从我读过的内容来看,它显然是 spark-csv 解析器,它没有检测到行尾字符并将整个内容读取为一条巨大的线。它适用于未压缩的 csv 但不适用于 .csv.bz2 文件的事实对我来说很奇怪。
另外,就像我说的,它只发生在进行数据框联合时。我试图用火花上下文做 rdd 联合,同样的错误。
问题很奇怪。如果我使用未压缩的文件,则没有问题。但是,如果我使用压缩的 bz2 文件,我会得到一个索引越界错误。
从我读过的内容来看,它显然是 spark-csv 解析器,它没有检测到行尾字符并将整个内容读取为一条巨大的线。它适用于未压缩的 csv 但不适用于 .csv.bz2 文件的事实对我来说很奇怪。
另外,就像我说的,它只发生在进行数据框联合时。我试图用火花上下文做 rdd 联合,同样的错误。
我的整个问题是我使用的是 Scala-IDE。我以为我使用的是 hadoop 2.7,但我没有运行 mvn eclipse:eclipse 来更新我的 m2_repo,所以我仍在使用 hadoop 2.2(在引用的库中,因为 spark core 最新版本默认引用 hadoop 2.2,我没有不知道为什么)。
总而言之,为了将来参考,如果您打算使用 spark-csv,请不要忘记在 pom.xml 中指定 hadoop 版本,即使 spark-core 本身引用了 hadoop 版本。
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.1</version>
</dependency>