hbase kundera表

omjgkv6w  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(390)

我想使用kundera在给定的命名空间中创建表
例子

foo:bar

其中foo是名称空间,bar是表名
以下配置不会发生这种情况
这是我的坚持单位

<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>

这是my 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作为表,student和cources作为列族
我所期望的是
我们erprofile:student as 一张table和我们erprofile:cource as 其他表格
我现在觉得kundera persitence.xml中的keyspace作为tablename,entities作为column family
如何避免这种情况??

tjjdgumg

tjjdgumg1#

我想你在用 kundera-hbase ```

com.impetus.kundera.client
kundera-hbase
${kundera.version}

对于您的用例,您应该使用 `kundera-hbase-v2` ```
<dependency>
     <groupId>com.impetus.kundera.client</groupId>
     <artifactId>kundera-hbase-v2</artifactId>
     <version>${kundera.version}</version>
</dependency>

Map到 kundera-hbase 键空间==>htable
实体==>列族(每个实体类的列族)
而且在 kundera-hbase-v2 keyspace==>命名空间
实体==>htable(每个实体一个htable)
更多详情请查看昆德拉维基。另外,请确保您使用的是最新版本的昆德拉。

相关问题