2016-09-25 132 views
0

我的代码,试图解析一个简单的CSV文件看起来是这样的:阿帕奇星火找不到类CSVReader

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

然而,星火工作带班未发现异常说CSVReader无法找到结束。我的pom.xml看起来像这样:

<dependencies> 
    <dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>1.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.opencsv</groupId> 
     <artifactId>opencsv</artifactId> 
     <version>3.8</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

我该如何解决这个问题?

+0

嗯......你在运行时_provide_所需的库? – Seelenvirtuose

+0

备注 - Spark 1.1.0是一个非常旧的版本。当前版本是2.0.0。 –

+0

@Seelenvirtuose我不知道该如何回答。我是Maven的新手。我的理解是'提供'会导致JAR被下载并随最终JAR一起发布。 :/ –

回答

1

如果你的代码依赖于其他项目,则需要将它们打包到一起 您的应用程序,以便将代码分配到星火 集群。为此,创建一个包含代码及其依赖关系的组装jar(或“超级”jar)。 sbt和Maven都有程序集 插件。创建装配罐时,将Spark和Hadoop列为 提供的依赖关系;这些不需要捆绑在一起,因为它们在运行时由集群管理器提供,它们是 。
来源:http://spark.apache.org/docs/latest/submitting-applications.html

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> 

还看到:How to make it easier to deploy my Jar to Spark Cluster in standalone mode?