2013-06-24 1 views
3

В настоящее время у меня есть кластер HBase/Hadoop без проблем, и я довольно хорошо знаком с этими продуктами. Недавно я слышал о Kundera, и это выглядит очень мощным инструментом, который я бы хотел использовать.Конфигурирование Kundera с HBase

Однако я не могу найти какую-либо документацию/учебники/примеры для настройки Kundera с помощью HBase. Я пробовал некоторые из материалов, с которыми мне довелось столкнуться, но они настолько провалились, что у меня сложилось впечатление, что это не имеет значения.

По существу я не знаю с чего начать. Я не беспокоюсь о том, что кто-то объясняет мне какие-то вещи с расширенным уровнем, но я просто не могу настроить эту настройку.

Если кто-нибудь может указать мне в правильном направлении, я был бы очень признателен.

TLDR: У меня есть кластер HBase, и я хочу использовать Kundera, и я не знаю, с чего начать. Благодарю.

ответ

3

Вы можете начать здесь https://github.com/impetus-opensource/Kundera и https://github.com/impetus-opensource/Kundera/wiki

Кундеры является JPA уступчивыми, это довольно легко и прямо вперед установку. wiki имеет достаточно документации/примеров, чтобы вы начали. Здесь также очень активна команда Kundera dev.

Просто создайте persistence.xml как показано https://github.com/impetus-opensource/Kundera/wiki/Common-Configuration

и Hbase конкретные варианты https://github.com/impetus-opensource/Kundera/wiki/HBase-Specific-Features

+0

Wow Большое спасибо. Эти ссылки намного яснее и информативнее, чем то, что я смог найти. Благодарю. – mdepalma

+0

Вы упомянули wiki. Не могли бы вы разместить ссылку на нее? Кажется, я не могу найти вики Kundera. Благодарю. – mdepalma

+0

whoooops. Не видел его на первой линии там. Благодарю. – mdepalma

1

Кундера Конфигурация + Hbase в Затмении

Запустите конфигурацию Hbase на Linux или другие

создание динамического веб-проекта

Добавьте следующую баночку в библиотеки проекта

 1)asm-4.0.jar 
     2)cglib-2.1.jar 
     3)commons-lang-2.5.jar 
     4)commons-logging-1.1.1.jar 
     5)hadoop-core-1.0.0.jar 
     6)hbase-0.94.4.jar 
     7)jts-1.11.jar 
     8)kundera-core-2.5.1.jar 
     9)kundera-hbase-2.5.jar 
     10)log4j-1.2.16.jar 
     11)lucene-core-3.5.0.jar 
     12)xstream-1.3.1.jar 
     13)zookeeper-3.3.2.jar 

Добавить файл persistence.xml следующего

 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
      version="2.0"> 
      <persistence-unit name="hbase_pu"> 
       <provider>com.impetus.kundera.KunderaPersistence</provider> 
       <class>com.fvrl.MyObject</class>  
       <properties>    
        <property name="kundera.nodes" value="your host ip"/> 
        <property name="kundera.port" value="port"/> 
        <property name="kundera.keyspace" value="KunderaExamples"/> 
        <property name="kundera.dialect" value="hbase"/> 
        <property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" /> 
        <property name="kundera.client.property" value="yourxmlfilepath" /> 
          <property name="kundera.ddl.auto.prepare" value="update" />    
       </properties>  
      </persistence-unit> 
     </persistence> 

Над пути XML-файл должна быть местом в нужном месте.

Сделайте свой Entity Class, как показано ниже

 @Entity 
     @Table(name = "MyObject", schema = "[email protected]_pu") 
     @NamedQueries({ 
      @NamedQuery(name="findAll", query="select c from MyObject c") 
     }) 
     public class MyObject 
     { 

      @Id 
      private String id; 
      public String getId() { 
       return id; 
      } 
      public void setId(String id) { 
       this.id = id; 
      } 
      public String getFirstname() { 
       return firstname; 
      } 
      public void setFirstname(String firstname) { 
       this.firstname = firstname; 
      } 
      public String getSecondname() { 
       return secondname; 
      } 
      public void setSecondname(String secondname) { 
       this.secondname = secondname; 
      } 
      private String firstname; 
      private String secondname; 
     } 

запустить свой проект с помощью основного метода

 public static void main(String[] args) { 

       MyObject myObject = new MyObject(); 
       myObject.setId("0006"); 
       myObject.setFirstname("Nirav"); 
      myObject.setSecondname("shah"); 

       EntityManagerFactory emf = Persistence.createEntityManagerFactory("hbase_pu"); 
       EntityManager em = emf.createEntityManager(); 

       //Save 
       HBaseJPAImpl hBaseJPAImpl =new HBaseJPAImpl(em); 
       hBaseJPAImpl.save(myObject); 

       //retrive 
       List<MyObject> list= hBaseJPAImpl.findAllDetails(); 

       for(MyObject myObject1 : list){ 
        System.out.println("Row Id : "+myObject1.getId()); 
        System.out.println("First Name : "+myObject1.getFirstname()); 
        System.out.println("Last Name : "+myObject1.getSecondname()); 
       } 
     } 

HBaseJPAImpl Класс следующие

 public class HBaseJPAImpl implements IHBaseJPA 
     { 
      public HBaseJPAImpl(EntityManager em) { 
       // TODO Auto-generated constructor stub 
       this.em = em; 
      } 
      @Inject protected EntityManager em; 

      @Transactional 
      public void save(MyObject myObject) 
      { 

      // em.persist(myObject)); 

      EntityTransaction entityTransaction = this.em.getTransaction(); 
      entityTransaction.begin(); 

      em.persist(myObject)); 

      entityTransaction.commit(); 

      } 

      @SuppressWarnings("unchecked") 
      @Override 
      @Transactional 
      public List<MyObject> findAllDetails() 
      { 
      Query query = em.createNamedQuery("findAll"); 
      List<MyObject> results = (List<MyObject>) query.getResultList(); 
      return results; 
      } 
     } 

     interface IHBaseJPA is below 

     public interface IHBaseJPA 
     { 
      void save(MyObject contact);`enter code here` 
      List<MyObject> findAllDetails(); 
     } 

если найти какие-либо вопросы по выше, то контакт me