You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Xiaoxiang Yu (Jira)" <ji...@apache.org> on 2021/04/27 02:37:02 UTC
[jira] [Closed] (KYLIN-4921) stream config lost when create table
with same table_name in diff project.
[ https://issues.apache.org/jira/browse/KYLIN-4921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiaoxiang Yu closed KYLIN-4921.
-------------------------------
Released at kylin 3.1.2
> stream config lost when create table with same table_name in diff project.
> --------------------------------------------------------------------------
>
> Key: KYLIN-4921
> URL: https://issues.apache.org/jira/browse/KYLIN-4921
> Project: Kylin
> Issue Type: Bug
> Components: Real-time Streaming
> Reporter: Kun Liu
> Assignee: Kun Liu
> Priority: Major
> Fix For: v3.1.2
>
>
> In project A, I have created a stream table test_table.
> When I create the table test_table in project B, the table can't be created, but the source config of table in project A lost.
>
> The reason:
> In the `saveStreamingConfig` function, if creating table failed, the config will be dropped in finally phase.
>
>
> By design:
> In order to identity one stream table `StreamingSourceConfig` in the metastore, kylin use the key
> `ResourceStore.STREAMING_V2_RESOURCE_ROOT + "/" + name + ".json"` as the identifier.
> But this design can't work in multi-project.
> [~hit_lacus] PTAL
>
> [Design Doc|https://docs.google.com/document/u/1/d/1QfTn5dBcHeY2EAnMUS2V0sqj9dpFQwmVuAZon7wCtns/edit#]
>
> Design:
> h1. The Rowkey of the Stream source config
>
> h1. Origin design
>
> In the project `project_test`, we create a real-time stream table with the name of `stream_table`, which will create two metadata, one the `tableDesc` and another is `streamSourceConfig`.
>
> The `tableDesc` is stored in the hbase by the path `table_prefix/tablename--projectname.json`, but the `streamSourceConfig` is stored in the hbase by the path `stream_source_prefix/tablename.json`. The action of creating tables with the same name in different projects is not allowed.
>
> h1. New design
>
> The new rowkey for storing the `streamSourceConfig` is `stream_source_prefix/tablename--projectname.json`.
>
> h1. How to deal with the compatibility in kylin
> h2. The type of RowKey
> * NewRowKey: `stream_source_prefix/tablename--projectname.json`
> * OldRowKey: `stream_source_prefix/tablename.json`
> h2. The type of operation
> * save source
> * update source
> * query/get source
> * delete
> h3. saveStreamingConfig:
> * store the stream source config with NewRowKey
> h3. removeStreamingConfig:
> * if the source config exist in the NewRowKey, delete the source config using the NewRowKey
> * if the source config exist in the OldRowKey, delete the source config using the OldRowKey
> h3. updateStreamingConfig:
> * removeStreamingConfig
> * saveStreamingConfig
>
> h3. reloadStreamingConfigLocal/queryStreamingConfig
> Hypothesis: The stream config must exist.
>
> * check NewRowKey, if the source config exists, return the object.
> * if the source config doesn't exist, and the source config exists in the OldRowKey
> * get the Source config and update the project name of the source config
> * delete the source config in the OldRowKey and resave the source config in the NewRowKey
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)