问题很奇怪。如果我使用未压缩的文件,就不会有问题。但是,如果我使用压缩的bz2文件,我会得到一个索引越界错误。
根据我所读到的,它显然是spark-csv解析器,它不会检测行字符的结尾,而是将整个内容作为一个大行读取。事实上,它可以在未压缩的csv上工作,但不能在.csv.bz2文件上工作,这对我来说是相当奇怪的。
而且,正如我所说的,只有在执行数据帧联合时才会发生这种情况。我尝试使用spark上下文进行rdd联合,同样的错误。
发布于 2016-10-17 07:07:03
我的整个问题是我使用的是Scala-IDE。我认为我使用的是Hadoop2.7,但我没有运行mvn eclipse:eclipse来更新我的m2_repo,所以我仍然使用Hadoop2.2(在引用的库中,因为spark core最新版本默认情况下引用Hadoop2.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>https://stackoverflow.com/questions/40075168
复制相似问题