2016-03-21 12 views
0

私はScalaで新しく、コードの一部を読むのに助けが必要です。私は次のコード:ALS.scalaからApache Sparkを探して、どのように動作し、どのソースコードにどのクラス/オブジェクトが関わっているのかを理解しようとしています。 現在、私はSchemaUtilsオブジェクトの性質を理解できないため、line 166のコードに問題があります。オブジェクトのクラスを特定する、Scala

私のローカルリポジトリに既にソースコードをコピーしましたが、SchemaUtilsオブジェクトの認識エラーが発生しました。私のpom.xmlで私はスパークバージョン1.6.1を定義しましたが、私はこのオブジェクトがこのバージョン(おそらく古いもの)でもう利用できないと思います。したがってScalaでは認識されません。エラーメッセージ:

not found: value SchemaUtils 

このバグをどのように修正できますか?ここで

は私pom.xml次のとおりです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>test.spark</groupId> 
    <artifactId>als</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>scala-tools.org</id> 
      <name>Scala-tools Maven2 Repository</name> 
      <url>http://scala-tools.org/repo-releases</url> 
     </pluginRepository> 
    </pluginRepositories> 

    <dependencies> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.11</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-mllib_2.11</artifactId> 
      <version>1.6.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.11</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <!----> 
    </dependencies> 

    <build> 
     <plugins> 
      <!-- mixed scala/java compile --> 
      <plugin> 
       <groupId>org.scala-tools</groupId> 
       <artifactId>maven-scala-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>compile</id> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
         <phase>compile</phase> 
        </execution> 
        <execution> 
         <id>test-compile</id> 
         <goals> 
          <goal>testCompile</goal> 
         </goals> 
         <phase>test-compile</phase> 
        </execution> 
        <execution> 
         <phase>process-resources</phase> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
      <!-- for fatjar --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
       <executions> 
        <execution> 
         <id>assemble-all</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>fully.qualified.MainClass</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
     <pluginManagement> 
      <plugins> 
       <!--This plugin's configuration is used to store Eclipse m2e settings 
        only. It has no influence on the Maven build itself. --> 
       <plugin> 
        <groupId>org.eclipse.m2e</groupId> 
        <artifactId>lifecycle-mapping</artifactId> 
        <version>1.0.0</version> 
        <configuration> 
         <lifecycleMappingMetadata> 
          <pluginExecutions> 
           <pluginExecution> 
            <pluginExecutionFilter> 
             <groupId>org.scala-tools</groupId> 
             <artifactId> 
              maven-scala-plugin 
             </artifactId> 
             <versionRange> 
              [2.15.2,) 
             </versionRange> 
             <goals> 
              <goal>compile</goal> 
              <goal>testCompile</goal> 
             </goals> 
            </pluginExecutionFilter> 
            <action> 
             <execute></execute> 
            </action> 
           </pluginExecution> 
          </pluginExecutions> 
         </lifecycleMappingMetadata> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</project> 
+1

おそらく 'pom.xml'を投稿してください。 – declension

+0

@Tzach Zohar、ありがとうございます。私は望む、私はすでにそれをやった。あなたが私を助けることができれば、私はpom.xmlを投稿します。 – Guforu

+0

'SchemaUtils'は' org.apache.spark'にはプライベートなので、あなたのコードで使うことはできません:https://github.com/apache/spark/blob/v1.4.0/mllib/src/main/scala/ org/apache/spark/ml/util/SchemaUtils.scala#L26 –

答えて

1

ScalaのAPIについてはSpark docs

から、スパーク1.6.1は、Scalaの2.10を使用しています。互換性のあるScalaバージョン(2.10.x)を使用する必要があります。

あなたは(まだ)スパークで2.11を使用するので、_2.10を読んで、それを試してエンコードされたScalaのバージョンを使用して<artifactId>spark-core_2.11</artifactId>および関連するすべての依存関係を変更することはできません。

+0

ありがとうございます。申し訳ありません、私は本当にスカラーの新人です – Guforu

+0

問題はありません、それは複雑な言語です... – declension

+0

1. 2.11用にスパークを構築できます。 http://spark.apache.org/docs/latest/building-spark.html#building-for-scala-211 – Zernike

関連する問題