2016-09-25 128 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?