【发布时间】:2012-09-17 15:08:11
【问题描述】:
我在尝试遵循 DataNucleus HBase tutorial 时遇到异常(“必须指定名为 javax.jdo.PersistenceManagerFactoryClass 的属性”)。
我的 datanucleus.properties 文件(如下)没有指定这样的属性,但是教程也没有,DataNucleus HBase sample 也没有。
找到 3.1 样本后编辑:
src/main/resources/datanucleus.properties
javax.jdo.option.ConnectionURL=hbase:hx1:60010
javax.jdo.option.Mapping=hbase
datanucleus.metadata.validate=false
datanucleus.autoCreateSchema=true
datanucleus.validateTables=false
datanucleus.validateConstraints=false
src/main/java/hbase-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hx1:2181</value>
<description>The host and port that the HBase master runs at.
</description>
</property>
</configuration>
src/main/com.business.model/package-hbase.xml
<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC
"-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
"http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
<package name="com.business.model">
<class name="Recommendation" table="Recommendations">
<field name="id" column="ID"/>
<field name="documents" column="DOCUMENTS"/>
</class>
<class name="Document">
<field name="id" column="ID"/>
<field name="title" column="TITLE"/>
</class>
</package>
</orm>
任何想法我错过了什么?在 JPA 工作了几年后,我是 JDO 的新手。
【问题讨论】:
-
您指的是已弃用示例的 v3.0 和教程的 v3.1。我会解决的。
-
我已经复制了 3.1 示例,但仍然出现相同的错误。有什么想法吗?
-
当我下载 3.1 示例时,取消注释“pom.xml”和“datanucleus.properties”中的 HBase 位并按照教程运行它,它工作正常(您可能需要更新版本hadoop-core、hbase、zookeeper 由于它们的依赖问题而更新到最近的东西)。当您的类路径中有多个 JDO 实现时,您只需要“javax.jdo.PersistenceManagerFactoryClass”(并且通过教程自述文件运行仅引入 DataNucleus),否则它会从 datanucleus-api-jdo.jar 中的服务文件中识别实现
-
仅供参考,如果
datanucleus.properties文件的路径中有空格,则架构生成失败。 -
这个例子对我不起作用:java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HColumnDescriptor.setCompressionType。我不明白为什么,根据 POM,HBase 版本是
0.90.4,而我在类路径中看不到任何其他版本?
标签: java hbase jdo datanucleus