命名空间不起作用的 Hbase Kundera Table
Hbase Kundera Table with namespace not working
我想使用 Kundera 在给定的命名空间中创建表
示例
foo:bar
其中 foo 是命名空间 & bar 是 tablename
以下配置不会发生这种情况
这是我的坚持单位
<provider>com.impetus.kundera.KunderaPersistence</provider>
<properties>
<property name="kundera.nodes" value="ZookeeperIP" />
<property name="kundera.port" value="2181" />
<property name="kundera.client.property" value="User.xml"/>
<property name="kundera.keyspace" value="UserPROFILE" />
<property name="kundera.dialect" value="hbase" />
<property name="kundera.ddl.auto.prepare" value="update" />
<property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
</properties>
</persistence-unit>
这是我的User.xml
<clientProperties>
<datastores>
<dataStore>
<name>hbase</name>
<connection>
<properties>
<property name="hbase.zookeeper.quorum" value="ZookeeperIP"/>
<property name="hbase.zookeeper.property.clientPort" value="2181"/>
</properties>
</connection>
<schemas>
<schema>
<name>UNIVERCITY</name>
<tables>
<table>
<name>STUDENT</name>
<properties>
<property name="TTL" value="12345678"/>
<property name="VERSIONS" value="6"/>
<property name="MIN_VERSIONS" value="3"/>
<property name="COMPRESSION" value="GZ"/>
<property name="COMPRESSION_COMPACT" value="GZ"/>
</properties>
</table>
<table>
<name>COURCES</name>
<properties>
<property name="TTL" value="12345678"/>
<property name="VERSIONS" value="6"/>
<property name="MIN_VERSIONS" value="3"/>
<property name="COMPRESSION" value="GZ"/>
<property name="COMPRESSION_COMPACT" value="GZ"/>
</properties>
</table>
</tables>
</schema>
</schemas>
</dataStore>
</datastores>
</clientProperties>
我的实体 类 如下所示
@Entity
@Table(name = "STUDENT", schema = "UserPROFILE@hbase_pu")
public class Student{
@Id
@Column(name = "StudentID")
String StudentID
@Column(name = "Name")
String Name
}
@Entity
@Table(name = "COURCES", schema = "UserPROFILE@hbase_pu")
public class Cource{
@Id
@Column(name = "CourceID")
String CourceID
@Column(name = "Name")
String Name
}
当我得到 运行 个测试用例时
UserPROFILE 作为 table & STUDENT & COURCES 作为他们的列族
我期待的是
UserProfile:STUDENT as one table&
UserProfile:COURCE 和另一个一样 table
感觉现在Kundera中的Keyspace Persitence.xml以TableName和Entities作为列族
如何避免这种情况 ??
我认为你正在使用 kundera-hbase
<dependency>
<groupId>com.impetus.kundera.client</groupId>
<artifactId>kundera-hbase</artifactId>
<version>${kundera.version}</version>
</dependency>
对于您的用例,您应该使用 kundera-hbase-v2
<dependency>
<groupId>com.impetus.kundera.client</groupId>
<artifactId>kundera-hbase-v2</artifactId>
<version>${kundera.version}</version>
</dependency>
映射在kundera-hbase
- 键空间==> hTable
- 实体==>列族(每个实体一个列族class)
并在 kundera-hbase-v2
- 键空间 ==> 命名空间
- 实体==> hTable(每个实体一个hTable)
检查 Kundera wiki 了解更多详情。
另外,请确保您使用的是 Kundera 的 latest version。
我想使用 Kundera 在给定的命名空间中创建表
示例
foo:bar
其中 foo 是命名空间 & bar 是 tablename
以下配置不会发生这种情况
这是我的坚持单位
<provider>com.impetus.kundera.KunderaPersistence</provider>
<properties>
<property name="kundera.nodes" value="ZookeeperIP" />
<property name="kundera.port" value="2181" />
<property name="kundera.client.property" value="User.xml"/>
<property name="kundera.keyspace" value="UserPROFILE" />
<property name="kundera.dialect" value="hbase" />
<property name="kundera.ddl.auto.prepare" value="update" />
<property name="kundera.client.lookup.class" value="com.impetus.client.hbase.HBaseClientFactory" />
</properties>
</persistence-unit>
这是我的User.xml
<clientProperties>
<datastores>
<dataStore>
<name>hbase</name>
<connection>
<properties>
<property name="hbase.zookeeper.quorum" value="ZookeeperIP"/>
<property name="hbase.zookeeper.property.clientPort" value="2181"/>
</properties>
</connection>
<schemas>
<schema>
<name>UNIVERCITY</name>
<tables>
<table>
<name>STUDENT</name>
<properties>
<property name="TTL" value="12345678"/>
<property name="VERSIONS" value="6"/>
<property name="MIN_VERSIONS" value="3"/>
<property name="COMPRESSION" value="GZ"/>
<property name="COMPRESSION_COMPACT" value="GZ"/>
</properties>
</table>
<table>
<name>COURCES</name>
<properties>
<property name="TTL" value="12345678"/>
<property name="VERSIONS" value="6"/>
<property name="MIN_VERSIONS" value="3"/>
<property name="COMPRESSION" value="GZ"/>
<property name="COMPRESSION_COMPACT" value="GZ"/>
</properties>
</table>
</tables>
</schema>
</schemas>
</dataStore>
</datastores>
</clientProperties>
我的实体 类 如下所示
@Entity
@Table(name = "STUDENT", schema = "UserPROFILE@hbase_pu")
public class Student{
@Id
@Column(name = "StudentID")
String StudentID
@Column(name = "Name")
String Name
}
@Entity
@Table(name = "COURCES", schema = "UserPROFILE@hbase_pu")
public class Cource{
@Id
@Column(name = "CourceID")
String CourceID
@Column(name = "Name")
String Name
}
当我得到 运行 个测试用例时
UserPROFILE 作为 table & STUDENT & COURCES 作为他们的列族
我期待的是
UserProfile:STUDENT as one table& UserProfile:COURCE 和另一个一样 table
感觉现在Kundera中的Keyspace Persitence.xml以TableName和Entities作为列族
如何避免这种情况 ??
我认为你正在使用 kundera-hbase
<dependency>
<groupId>com.impetus.kundera.client</groupId>
<artifactId>kundera-hbase</artifactId>
<version>${kundera.version}</version>
</dependency>
对于您的用例,您应该使用 kundera-hbase-v2
<dependency>
<groupId>com.impetus.kundera.client</groupId>
<artifactId>kundera-hbase-v2</artifactId>
<version>${kundera.version}</version>
</dependency>
映射在kundera-hbase
- 键空间==> hTable
- 实体==>列族(每个实体一个列族class)
并在 kundera-hbase-v2
- 键空间 ==> 命名空间
- 实体==> hTable(每个实体一个hTable)
检查 Kundera wiki 了解更多详情。 另外,请确保您使用的是 Kundera 的 latest version。