Java Apache Spark找不到类CSVReader
我尝试解析简单csv文件的代码如下所示:Java Apache Spark找不到类CSVReader,java,maven,intellij-idea,apache-spark,Java,Maven,Intellij Idea,Apache Spark,我尝试解析简单csv文件的代码如下所示: SparkConf conf = new SparkConf().setMaster("local").setAppName("word_count"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> csv = sc.textFile("/home/user/data.csv"); JavaRDD<String[]> parsed = csv
SparkConf conf = new SparkConf().setMaster("local").setAppName("word_count");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> csv = sc.textFile("/home/user/data.csv");
JavaRDD<String[]> parsed = csv.map(x-> new CSVReader(new StringReader(x)).readNext());
parsed.foreach(x->System.out.println(x));
我该如何解决这个问题
如果您的代码依赖于其他项目,则需要对它们进行打包
与应用程序一起,以便将代码分发给Spark
簇为此,创建一个包含
您的代码及其依赖项。sbt和Maven都有组件
插件。创建程序集jar时,将Spark和Hadoop列为
提供依赖关系;这些不需要捆绑,因为它们是
由群集管理器在运行时提供。资料来源: Maven在将项目打包到JAR中时不提供依赖JAR。为了提供依赖项jar,我添加了Maven Shade插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<finalName>${project.artifactId}-${project.version}</finalName>
</configuration>
</plugin>
org.apache.maven.plugins
如果您的代码依赖于其他项目,则需要对它们进行打包
与应用程序一起,以便将代码分发给Spark
簇为此,创建一个包含
您的代码及其依赖项。sbt和Maven都有组件
插件。创建程序集jar时,将Spark和Hadoop列为
提供依赖关系;这些不需要捆绑,因为它们是
由群集管理器在运行时提供。
资料来源:
Maven在将项目打包到JAR中时不提供依赖JAR。为了提供依赖项jar,我添加了Maven Shade插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<finalName>${project.artifactId}-${project.version}</finalName>
</configuration>
</plugin>
org.apache.maven.plugins
嗯。。。您是否在运行时提供了所需的库?旁注-Spark 1.1.0是一个非常旧的版本。目前的版本是2.0.0。@请参阅Virtuose,我不知道如何回答这个问题。我是马文的新手。我的理解是,提供的
会导致下载JAR并将其与将要创建的最终JAR一起发送:/不幸的是,没有。提供的范围
提示打包工具(例如maven war插件或maven assembly插件,或其他任何东西)不要在打包程序中提供此库,因为它将由运行时环境(例如,您使用的tomcat安装)提供。例如,JavaEEAPI是您依赖的库,但始终由运行时提供。通常不提供其他库,因此需要将其范围设置为compile
。如果有帮助,我会写一个简短的答案。@SeelenVirtuse如果我错了,请纠正我,对于Spark runtime未提供的所有外部依赖项(如twitter4j、GSON等),我必须将作用域设置为compile
,实际上。。。您是否在运行时提供了所需的库?旁注-Spark 1.1.0是一个非常旧的版本。目前的版本是2.0.0。@请参阅Virtuose,我不知道如何回答这个问题。我是马文的新手。我的理解是,提供的
会导致下载JAR并将其与将要创建的最终JAR一起发送:/不幸的是,没有。提供的范围
提示打包工具(例如maven war插件或maven assembly插件,或其他任何东西)不要在打包程序中提供此库,因为它将由运行时环境(例如,您使用的tomcat安装)提供。例如,JavaEEAPI是您依赖的库,但始终由运行时提供。通常不提供其他库,因此需要将其范围设置为compile
。如果有帮助,我会写一个简短的答案。@SeelenVirtuse如果我错了,请纠正我,对于Spark runtime未提供的所有外部依赖项(如twitter4j、GSON等),我必须将作用域设置为compile
,实际上是吗?