Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark:ClassNotFoundException在读/写CSV时发生异常_Java_Apache Spark_Hdfs_Databricks - Fatal编程技术网

Java Spark:ClassNotFoundException在读/写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:

我正试图将如下数据帧写入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
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>