2012-12-05 5 views
8

간단한 Hbase 예제를 실행하면 문제가 있습니다.Hbase Java 예제를 실행하는 방법은 무엇입니까?

하나의 테이블을 만들고 일부 레코드를 삽입하는 HbaseTest.java에서 create를 만들었습니다. 유닉스에서는 자바 클래스를 컴파일 할 수있다. 으로.

$ javac의의 -classpath의 HBase를-0.94.2.jar : $ 자바 -classpath hbase- : 하둡 코어-1.0.4.jar HBaseTest.java

하지만하여이 프로그램을 실행할 수 없습니다입니다 0.94.2.jar : hadoop-core-1.0.4.jar HBaseTest

위의 명령이 저에게 효과적이지 않습니다. 문제가 무엇인지 잘 모르시겠습니까? Hbase Java 예제를 실행하는 올바른 방법입니까?

+1

"나에게 효과가 없다"는 것은 무엇을 의미합니까? 에러 메시지? 아무것도하지 않습니까? –

+0

hbase 쉘이 작동합니까? 그렇지 않다면 설치를 확인하고이 명령을 실행하는 동안 hbase – Pixou

+0

을 다시 시작해야합니다. 아래 오류가 발생합니다 : $ java -classpath hbase-0.94.2.jar : /scratch/hadoop-1.0.4/hadoop-core-1.0.4 .jar HBaseTest 스레드 "main"의 예외 java.lang.NoClassDefFoundError :/scratch/hadoop-1/0/4/hadoop-core-1/0/4/jar 발생 원인 : java.lang.ClassNotFoundException : .scratch .hadoop-1.0.4.hadoop 코어-1.0.4.jar 을 이는 java.net.URLClassLoader $ 1.run (URLClassLoader.java:202) ... java.lang.ClassLoader.loadClass에서 (ClassLoader.java에서 : 246) 메인 클래스를 찾을 수 없습니다 : /scratch/hadoop-1.0.4/hadoop-core-1.0.4.jar. 프로그램이 종료됩니다. –

답변

16

"hbase classpath"를 사용하여 필요한 클래스 경로를 얻을 수 있습니다.

 
    /* 
    * Compile and run with: 
    * javac -cp `hbase classpath` TestHBase.java 
    * java -cp `hbase classpath` TestHBase 
    */ 
    import org.apache.hadoop.conf.Configuration; 
    import org.apache.hadoop.hbase.*; 
    import org.apache.hadoop.hbase.client.*; 
    import org.apache.hadoop.hbase.util.*; 

    public class TestHBase { 
     public static void main(String[] args) throws Exception { 
      Configuration conf = HBaseConfiguration.create(); 
      HBaseAdmin admin = new HBaseAdmin(conf); 
      try { 
       HTable table = new HTable(conf, "test-table"); 
       Put put = new Put(Bytes.toBytes("test-key")); 
       put.add(Bytes.toBytes("cf"), Bytes.toBytes("q"), Bytes.toBytes("value")); 
       table.put(put); 
      } finally { 
       admin.close(); 
      } 
     } 
    } 
+2

예. Hbase/bin $./hbase classpath 2. 프로그램을 실행하는 데 필요한 모든 경로를 포함하고있는 클래스 패스에 대해 매우 큰 문자열을 얻었습니다. 3. $ java % hbase classpath of string (2 단계) .... 이제 작동 중입니다. :) –

+0

이것은 작동합니다. 일반 hbase 및 hbase-slider-app 모두에서 소스와 명령어를 컴파일하고 실행합니다. 'hbase classpath'는 $ {hbase_home}/lib, hbase/conf, hadoop/conf 등의 거의 모든 것을 포함하는 매우 큰 문자열을 반환합니다. –

1

가능하면 NetBeans와 같은 IDE를 사용하여 Java HBase Client API 프로그램을 개발할 수 있습니다. 넷빈즈를 연 후

  • 는 => 라이브러리 도구로 이동하여 '새 도서관'을 클릭하고 그것을 '맵리 듀스'와 같은 이름을 지정합니다.
  • JAR/폴더 추가를 클릭하고 파일 시스템 브라우저를 탐색하거나 설치 디렉토리로 이동하여 일반적으로 hadoop 라이브러리의 경우 /usr/local/hadoop-2.x.x/share/hadoop 및 HBase 라이브러리의 경우 /usr/local/hbase-1.x.x/lib 아래에 필수 JAR 파일을 선택하십시오. . Shift + 화살표 키는 jar 파일을 대량 선택하도록 작동합니다.
  • 평소처럼 새 Java 프로젝트를 만들고 프로젝트 창에서 마우스 오른쪽 버튼을 클릭하고 '속성'으로 이동하십시오.
  • 이제 라이브러리 => 라이브러리 추가를 클릭하고 표시된 목록에서 라이브러리를 선택하십시오. 모든 프로세스가 실행 중이면 컴파일하고 실행하는 것이 좋습니다.
관련 문제