3

私は現在、HBase/Hadoop クラスターを問題なく実行しており、これらの製品にかなり精通しています。最近、Kundera について耳にしましたが、これは非常に強力なツールであり、使用したいと考えています。

ただし、HBase で Kundera をセットアップするためのドキュメント/チュートリアル/例が見つからないようです。たまたま出くわしたいくつかの資料を試してみましたが、それらはひどく失敗したため、関連性がないという印象を受けました.

基本的に、どこから始めればよいかわかりません。誰かが高度なレベルのことを説明してくれることを心配していませんが、これを設定することはできません。

誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.

TLDR: HBase クラスターを実行していて、それで Kundera を使用したいのですが、どこから始めればよいかわかりません。ありがとう。

4

2 に答える 2

3

ここから開始できますhttps://github.com/impetus-opensource/Kunderaおよびhttps://github.com/impetus-opensource/Kundera/wiki

Kundera は JPA に準拠しており、セットアップは非常に簡単で簡単です。wiki には、開始するのに十分なドキュメント/例があります。ここでも Kundera 開発チームは非常に活発に活動しています。

https://github.com/impetus-opensource/Kundera/wiki/Common-Configurationに示すように、persistence.xml を作成するだけ です。

および hbase 固有のオプション https://github.com/impetus-opensource/Kundera/wiki/HBase-Specific-Features

于 2013-06-25T04:57:03.763 に答える
1

Eclipse での Kundera + Hbase 構成

Linux などで Hbase 構成を開始する

動的 Web プロジェクトを作成する

次のjarをプロジェクトのライブラリに追加します

        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
        @Table(name = "MyObject", schema = "KunderaExamples@hbase_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;
        }

main メソッドでプロジェクトを実行する

        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();
        }

上記に関する質問が見つかった場合は、私に連絡してください

于 2013-08-30T13:06:57.713 に答える