2016-11-02 2 views
1

저는 Scala, SBT 및 Intellij에서 새로 왔습니다.스칼라에서 SBT와의 HBase 종속성

다음 SBT 파일 사용 :

name := "mycompany" 

version := "0.0.1-SNAPSHOT" 

scalaVersion := "2.11.8" 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "2.0.1", 
    "org.apache.spark" %% "spark-sql" % "2.0.1", 
    "org.apache.spark" %% "spark-mllib" % "2.0.1", 
    "org.apache.hbase" % "hbase-client" % "1.2.0", 
    "com.typesafe.akka" %% "akka-http-experimental" % "2.4.11" 
) 

resolvers ++= Seq(
    "Apache Repository" at "https://repository.apache.org/content/repositories/releases/" 
) 

세 아파치 스파크 종속성이

는 'Unreasolved dpendancy'태그로 IntelliJ에 밑줄이 빨간색입니다. 그러나 Spark 라이브러리를 가져올 수 있으며 Spark 작업은 아무런 문제없이 로컬 모드로 실행됩니다.

IDE 내부의 HBase 라이브러리에서 가져올 수 없습니다.

<dependency> 
     <groupId>org.apache.hbase</groupId> 
     <artifactId>hbase-client</artifactId> 
     <scope>provided</scope> 
     <version>1.2.0</version> 
    </dependency> 

내가 잘못 뭐하는 거지 다음 수입은 모두 내가 어떤 문제없이 만 받는다는 이러한 라인 위의 수입을 사용하여 자바 코드를 작성했습니다

import org.apache.hadoop.hbase.HBaseConfiguration 
import org.apache.hadoop.hbase.KeyValue 
import org.apache.hadoop.hbase.MasterNotRunningException; 
import org.apache.hadoop.hbase.TableName 
import org.apache.hadoop.hbase.ZooKeeperConnectionException 
import org.apache.hadoop.hbase.client.Connection 
import org.apache.hadoop.hbase.client.ConnectionFactory 
import org.apache.hadoop.hbase.client.Get 
import org.apache.hadoop.hbase.client.Result 
import org.apache.hadoop.hbase.client.Table 
import org.apache.hadoop.hbase.util.Bytes 

해결 될 수없는 이유는 무엇입니까?

resolvers ++= Seq(
    "Apache Repository" at "https://repository.apache.org/content/repositories/releases/", 
    "Cloudera repo" at "//repository.cloudera.com/artifactory/cloudera-repos/" 
) 

그러나, 나는 여전히 해결되지 않은 수입 (기타 위에서 지금은 OK입니다)이 있습니다

감사

편집 pamu의 게시물에

덕분에, 내가 가진 리졸버를 대체했다 :

import org.apache.hadoop.hbase.HBaseConfiguration 
import org.apache.hadoop.hbase.KeyValue 
import org.apache.hadoop.hbase.util.TableName 
import org.apache.hadoop.hbase.util.Bytes 

당신의 도움의

EDIT 버전 1.2.0에 언급 HBase를 lib 디렉토리에서

libraryDependencies ++= Seq(
    "org.apache.hbase" % "hbase-server" % 1.2.1, 
    "org.apache.hbase" % "hbase-client" % 1.2.1, 
    "org.apache.hbase" % "hbase-common" % 1.2.1, 
    "org.apache.hadoop" % "hadoop-common" % 2.7.3 
) 
+0

어떻게 사용 했습니까? 어떻게 HBase와 읽고 쓰게 되었습니까? –

+1

@ Maria Kamp Updated – ogen

답변

1

같은 클래스가 존재하지 않습니다. jar -tvf을 사용하여 확인할 수 있습니다. 해당 클래스는 2.0.0에 존재합니다. (확실하게) hbase API

+1

당신은 맞습니다. 그들은 hbase-common에 있습니다. 내 .sbt에 hbase-common을 추가하면 문제가 해결됩니다. 그러나 Maven (Maven이 자동으로 hbase-common을 포함)에서 필요하지 않은 이유를 이해하지 못합니다. SBT가 자동으로 의존성을 추가하는 방법이 있습니까? – ogen

+0

당신의 sbt 버전은 무엇입니까? http://www.scala-sbt.org/1.0/docs/sbt-0.13-Tech-Previews.html 의미는 0.13.8까지는 전이 의존성 해결과 같은 maven이 없음 – FaigB

+0

그래서 사용해야하는 종속성을 제공해야합니다. 적절한 resolver를 사용한 lib 의존성 – FaigB