Java Spark:ClassNotFoundException在读/写CSV时发生异常
我正试图将如下数据帧写入HDFS上的CSV文件Java Spark:ClassNotFoundException在读/写CSV时发生异常,java,apache-spark,hdfs,databricks,Java,Apache Spark,Hdfs,Databricks,我正试图将如下数据帧写入HDFS上的CSV文件 df.write() .format("com.databricks.spark.csv") .option("header", "true") .save("/user/cloudera/csv"); 但是我得到了以下错误 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat ... Caused by:
df.write()
.format("com.databricks.spark.csv")
.option("header", "true")
.save("/user/cloudera/csv");
但是我得到了以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat
...
Caused by: java.lang.ClassNotFoundException: org.apache.commons.csv.CSVFormat
... 21 more
My pom.xml具有以下依赖项
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-csv_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.6.0</version>
</dependency>
我还有commons csv/1.1和commons csv/1.5 in.m2存储库
有人能帮我吗?试着把那些需要的罐子添加到位于spark文件夹中的jars文件夹…\spark\jars\
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
org.apache.commons
并使用--jars添加到spark submit。这肯定会解决问题最好构建包含所有依赖项的胖jar(spark core
应标记为provided
)&只提交此jar,而不提交任何额外的--jars
选项
在Maven中,您可以使用with生成fat jar。比如:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
maven汇编插件
3.1.0
包裹
单一的
带有依赖项的jar
我想您应该将apache commons csv从dependency@Ramesh即使commons依赖项不存在,错误也会出现。我想,databricks依赖项还没有下载。只需清理项目并编译它again@RameshMaharjan另一个版本中存在databricks依赖项。我将.m2\repository\com\databricks\spark-csv_2.10
从我的电脑复制到运行spark代码的虚拟机。但是我仍然得到同样的错误。那你为什么不在虚拟机上编译呢?你为什么要复制回购协议?它已经存在了。罐子也在那儿。这就是为什么我不明白为什么它不起作用。我已经添加了所有的罐子。尤其是commons csv,因为这就是错误的来源。它似乎仍然不起作用。如果存在任何版本冲突,请尝试在pom依赖关系层次结构中搜索commons csv jar
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>