Spark:读取/写入CSV时发生ClassNotFoundException

时间:2018-06-20 07:47:12

标签: java apache-spark hdfs databricks

我正在尝试将如下所示的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。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

只需尝试将那些需要的jar添加到spark文件夹... \ spark \ jars \的jars文件夹中

答案 1 :(得分:0)

 <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-csv</artifactId>
    <version>1.5</version>
</dependency>

尝试将其添加到pom中。如果那不起作用,请手动从此处https://mvnrepository.com/artifact/org.apache.commons/commons-csv/1.5下载JAR,然后使用-jars 进行添加以引发提交。那肯定可以解决问题

答案 2 :(得分:0)

最好构建一个包含所有依赖项的胖jar(spark-core应标记为provided),然后仅提交此jar,而不添加任何其他--jars选项。

在Maven中,您可以将Maven Assembly pluginpredefined profile jar-with-dependencies结合使用来生成胖子。像这样:

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