我正在尝试将DataFrame写入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: java.lang.ClassNotFoundException: org.apache.commons.csv.CSVFormat
... 21 more
我的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>
我将spark 1.6.0与scala 2.10.5结合使用,并使用以下命令提交作业
spark-submit --jars /path/spark-csv_2.10-1.5.0.jar --class com.iris.Begin /path/CsvSolver.jar
我在.m2存储库中也有commons-csv/1.1和commons-csv/1.5。
有人能帮我一下吗?
发布于 2018-06-20 17:10:18
只需尝试将这些需要的jars添加到位于spark folder ...\spark\jars\中的jars文件夹
发布于 2018-06-20 17:32:30
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.5</version>
</dependency>
尝试将此内容添加到pom。如果这不起作用,请手动从这里下载JAR,然后使用-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv/1.5添加来触发提交。那肯定会解决这个问题
发布于 2018-06-20 19:00:18
最好构建包含所有依赖项的fat jar (应该将spark-core
标记为provided
) &只提交这个jar,而不使用任何额外的--jars
选项。
在Maven中,您可以通过结合使用Maven Assembly plugin和predefined profile jar-with-dependencies来生成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>
https://stackoverflow.com/questions/50942950
复制相似问题