Java 使用HBase配置Kundera
我目前有一个HBase/Hadoop集群运行没有问题,我对这些产品相当熟悉。我最近听说了昆德拉,它看起来是一个非常强大的工具,我想使用 但是,我似乎找不到任何关于使用HBase设置Kundera的文档/教程/示例。我曾经尝试过一些我碰巧遇到的材料,但是它们失败得太厉害了,以至于我觉得它们不相关 基本上我不知道从哪里开始。我不担心有人向我解释任何高级的东西,但我就是无法配置这个东西 如果有人能给我指出正确的方向,我将不胜感激 TLDR:我有一个正在运行的HBase集群,想使用Kundera,但我不知道从哪里开始。谢谢。你可以从这里开始 昆德拉是JPA兼容的,安装起来非常简单和直接。wiki有足够的文档/示例帮助您入门。昆德拉开发团队在这里也非常活跃 只需创建persistence.xml,如图所示 和hbase特定选项Java 使用HBase配置Kundera,java,xml,maven,hbase,kundera,Java,Xml,Maven,Hbase,Kundera,我目前有一个HBase/Hadoop集群运行没有问题,我对这些产品相当熟悉。我最近听说了昆德拉,它看起来是一个非常强大的工具,我想使用 但是,我似乎找不到任何关于使用HBase设置Kundera的文档/教程/示例。我曾经尝试过一些我碰巧遇到的材料,但是它们失败得太厉害了,以至于我觉得它们不相关 基本上我不知道从哪里开始。我不担心有人向我解释任何高级的东西,但我就是无法配置这个东西 如果有人能给我指出正确的方向,我将不胜感激 TLDR:我有一个正在运行的HBase集群,想使用Kundera,但我不
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>
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();
}
通过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());
}
}
publicstaticvoidmain(字符串[]args){
MyObject MyObject=新的MyObject();
myObject.setId(“0006”);
myObject.setFirstname(“Nirav”);
myObject.setSecondname(“shah”);
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“hbase_pu”);
EntityManager em=emf.createEntityManager();
//拯救
HBaseJPAImpl HBaseJPAImpl=新的HBaseJPAImpl(em);
hBaseJPAImpl.save(myObject);
//检索
List List=hBaseJPAImpl.findAllDetails();
用于(MyObject MyObject 1:列表){
System.out.println(“行Id:+myObject1.getId());
System.out.println(“名字:+myObject1.getFirstname());
System.out.println(“姓氏:+myObject1.getSecondname());
}
}
HBaseJPAImpl类如下
<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>
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();
}
公共类HBaseJPAImpl实现IHBaseJPA
{
公共HBaseJPAImpl(实体管理器em){
//TODO自动生成的构造函数存根
this.em=em;
}
@注入受保护的实体管理器em;
@交易的
公共无效保存(MyObject MyObject)
{
//em.persist(myObject));
EntityTransaction EntityTransaction=this.em.getTransaction();
entityTransaction.begin();
em.persist(myObject));
entityTransaction.commit();
}
@抑制警告(“未选中”)
@凌驾
@交易的
公共列表findAllDetails()
{
Query Query=em.createNamedQuery(“findAll”);
List results=(List)query.getResultList();
返回结果;
}
}
接口IHBaseJPA如下所示
公共接口IHBaseJPA
{
作废保存(MyObject联系人);`在此处输入代码`
列出findAllDetails();
}
如果您对以上内容有任何疑问,请与我联系哇,非常感谢。这些链接比我所能找到的更清晰、信息更丰富。谢谢。你提到了维基。你介意把链接贴上去吗?我好像找不到昆德拉维基。谢谢,哇。在第一行没有看到。谢谢