我正在尝试在我的CentOS 7计算机上构建Apache Crunch source code,但在执行crunch-spark
时mvn package
项目中出现以下错误:
[ERROR] /home/bwatson/programming/git/crunch/crunch-spark/src/it/scala/org/apache/crunch/scrunch/spark/PageRankClassTest.scala:71: error: bad symbolic reference. A signature in PTypeH.class refers to term protobuf
[ERROR] in package com.google which is not available.
[ERROR] It may be completely missing from the current classpath, or the version on
[ERROR] the classpath might be incompatible with the version used when compiling PTypeH.class.
[ERROR] .map(line => { val urls = line.split("\\t"); (urls(0), urls(1)) })
[ERROR] ^
其他有关类似错误的问题(here和here)似乎涉及PATH
或版本问题。我一直在搞乱,但似乎无法解决它们。为了完整性:
[bwatson@ben-pc crunch]$ scala -version
Scala code runner version 2.11.5 -- Copyright 2002-2013, LAMP/EPFL
[bwatson@ben-pc crunch]$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
[bwatson@ben-pc crunch]$ mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-16)
Maven home: /usr/share/maven
Java version: 1.8.0_31, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_31/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-123.20.1.el7.x86_64", arch: "amd64", family: "unix"
有什么建议吗?我不太确定Scala在哪里寻找它的依赖关系,但我认为Maven会照顾它。
答案 0 :(得分:0)
不幸的是Different versions of Scala are binary incompatible。目前默认为Apache Spark uses Scala 2.10.4, not Scala 2.11。 Apache Scrunch依赖于Spark。 Maven对此一无所知,因此无法提供帮助。有必要对Scrunch进行一些修改,以便为Scala 2.11 / JDK 1.8编译它。我目前正在研究这个问题,但我还没有找到解决方案。但是,如果我使用JDK 1.8而不是Scala 2.11编译Scala 2.10.4,我会收到您报告的错误消息,所以我不认为它正在按照您的意图进行。错误似乎来自Protobuf编译器或jar,但我不知道为什么会这样。
当我自己解决时,我会报告回来!
答案 1 :(得分:0)
事实证明,Crunch的官方文档缺少Maven参数。通过使用以下方法解决了这个问题:
mvn package -Dcrunch.platform=2