通过普通ddl来读写hive

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

通过普通ddl来读写hive

silence-2
问一下社区有没有计划支持普通的ddl(不用hive的catalog)来进行读写hive表吗
现在不支持是有什么考虑吗



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

Rui Li
你好,

请问一下不想用HiveCatalog来读写hive表的原因是什么呢?是不希望将hive表持久化(类似临时表的效果),或者是不希望维护一个metastore
server?

On Tue, Feb 23, 2021 at 2:57 PM silence <[hidden email]> wrote:

> 问一下社区有没有计划支持普通的ddl(不用hive的catalog)来进行读写hive表吗
> 现在不支持是有什么考虑吗
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/



--
Best regards!
Rui Li
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

silence-2
你好
感谢回复
主要有以下几点原因:
1、直接使用hive catalog进行hive表的创建修改风险太高,更希望在平台层限制hive表的创建和修改
2、connector的配置是保存在hive表的DBPROPERTIES里的,这是否就意味着想通过flink往现有hive表里写数据需要先通过alter语句修改hive表的属性配置,这里不希望对用户直接暴露alter
hive的能力
3、使用普通的ddl可以与现有connector的定义统一风格,不需要来回切换方言
4、可以不用将配置信息持久化,通过GenericInMemoryCatalog使用即可



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

Rui Li
Hi,

尝试回答一下你提的这几个问题。

1.
不希望用户直接在metastore中建表的话,那我理解用户所能创建的hive表就只有临时表了。目前HiveCatalog还不支持临时hive表,不过社区已经有计划做了,顺利的话可以在1.13中实现。我想了解一下抛开flink不谈,你们在hive中是如何解决这个问题的呢?也是只允许用户创建临时表么?还是说通过某种权限控制的机制来限制哪些用户可以建表?

2. 针对hive metastore里已有的表,通过flink读写数据不需要修改table
property。除非是希望修改表自身的属性(比如format、SerDe等等),这方面跟hive中的使用习惯是一致的。

3.
不用hive方言创建hive表可以尝试添加'is_generic'='false'参数,但前提也是要创建在HiveCatalog里。另外这种方式所能表达的语义很有限,基本只能创建简单的文本表。

4. 这个问题跟#1比较类似,也是可以通过临时表达到这个效果。

On Tue, Feb 23, 2021 at 5:58 PM silence <[hidden email]> wrote:

> 你好
> 感谢回复
> 主要有以下几点原因:
> 1、直接使用hive catalog进行hive表的创建修改风险太高,更希望在平台层限制hive表的创建和修改
>
> 2、connector的配置是保存在hive表的DBPROPERTIES里的,这是否就意味着想通过flink往现有hive表里写数据需要先通过alter语句修改hive表的属性配置,这里不希望对用户直接暴露alter
> hive的能力
> 3、使用普通的ddl可以与现有connector的定义统一风格,不需要来回切换方言
> 4、可以不用将配置信息持久化,通过GenericInMemoryCatalog使用即可
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/



--
Best regards!
Rui Li
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

silence-2
我理解各个公司都会有自己的元数据管理平台,hive表的创建修改都需要经过严格的权限控制在平台上进行操作,包括调度任务、实时写入任务、数据血缘等。
我个人觉得理想的方式是单个flink
sql的所有的connector通过自维护的元数据进行生成,不需要引入hivecatalog,使用默认的MemoryCatalog即可。
总结一下就是不希望引入HiveCatalog来进行hive表的读写



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

Rui Li
Hello,

因为hive本身是通过metastore来管理元数据的,所以通过HiveCatalog对接metastore里的元数据是比较自然的用法。Flink引入Catalog接口的初衷也是为了能方便的对接外部系统的元数据。如果你们用的是自己开发的元数据管理平台,也可以考虑实现自定义的Catalog来对接。

我觉得用in-memory
catalog维护hive元数据有点像手动对metastore的元数据做一次snapshot。虽然避免了用户直接访问底层元数据,但使用起来并不方便,比如想要读一张分区表的话需要手动把每个分区的信息添加到in-memory
catalog里。

所以如果是出于元数据安全的考虑,更好的做法应该是把catalog接入到已有鉴权机制的控制中。

On Tue, Feb 23, 2021 at 7:17 PM silence <[hidden email]> wrote:

> 我理解各个公司都会有自己的元数据管理平台,hive表的创建修改都需要经过严格的权限控制在平台上进行操作,包括调度任务、实时写入任务、数据血缘等。
> 我个人觉得理想的方式是单个flink
> sql的所有的connector通过自维护的元数据进行生成,不需要引入hivecatalog,使用默认的MemoryCatalog即可。
> 总结一下就是不希望引入HiveCatalog来进行hive表的读写
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/



--
Best regards!
Rui Li
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

silence-2
那用自定义的catalog怎么定义hive表来读写hive呢



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 通过普通ddl来读写hive

Rui Li
这个取决于你们自己的元数据管理系统了,Flink这边实现Catalog的各个接口对接你们的系统就行。比如在Catalog::createTable的实现里可以增加鉴权机制,判断是否允许用户建表之类的。

On Wed, Feb 24, 2021 at 11:14 AM silence <[hidden email]> wrote:

> 那用自定义的catalog怎么定义hive表来读写hive呢
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>


--
Best regards!
Rui Li