Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 Apache Spark找不到类CSVReader_Java_Maven_Intellij Idea_Apache Spark - Fatal编程技术网

Java Apache Spark找不到类CSVReader

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

我尝试解析简单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
,实际上是吗?