好吧。其实我本来觉得 Catalog 和 Connector 
独立开会更好理解,结构也更清晰。比如,按照我的想法,每种Catalog的实现,相当于针对各种主流数据源的表都对应某种元数据存储的方式,比如jdbc中存储了hive表的元数据等。
当然这只是想法,不清楚是否有方法官方维护一个Catalog(比如基于jdbc感觉相对方便,即持久化,更大众;毕竟我记得好像hive也支持jdbc的metastore来着),然后这个Catalog不断支持更多的主流数据源。
甚至,如果不可行。我认为读写hive数据不应该复用hive原先的metastore,我是考虑kafka流表的问题。如果flink-sql创建了一个流表保存到hive
 catalog,那么hive-sql或者spark-sql去读取这个表岂不是会报错什么的?

在 2020/8/11 上午10:26,“Rui Li”<[email protected]> 写入:

    > 不可以使用jdbc catalog,但使用hive connector嘛?
    
    
关于这一点稍微补充一下,我们目前访问hive元数据要求必须启动一个HMS,然后我们通过这个HMS来读写元数据(HiveCatalog就是用来对接HMS的),而不是直接去读底层的DBMS的,所以jdbc
    catalog是读不了hive元数据的。
    
    On Tue, Aug 11, 2020 at 9:32 AM Leonard Xu <[email protected]> wrote:
    
    > Hi Zhao
    >
    > > 1 为什么flinksql 1.11中,JDBC
    > Catalog通过简单的链接转给了connector,catalog和connector并不是同一个概念。我认为应该将jdbc
    > connectior和jdbc catalog分开放入各自目录。
    >
    >
    > 两个是不同的概念,JDBC catalog 可以 包含在 JDBC connector 里,你可以理解 JDBC connector 是 Flink
    > 与 JDBC 交互的连接器,Catalog也属于交互的一部分。JDBC connector里不只是数据的读取/写入 JDBC,也包括了JDBC
    > dialect 和 JDBC catalog等, JDBC catalog 目前能读取的表都是 JDBC(目前支持Pg) 的表,JDBC
    > catalog 读取表/库 的逻辑 和 JDBC 读取/写入数据 有很多的复用的逻辑。
    >
    >
    > > 2      为什么flinksql1.11中,connector部分没有hive connector。而是在hive
    > integration部分,以及catalogs中介绍。而且在 Table API & SQL/Hive Integration/Hive Read
    > & Write 部分,第一句是“Using the HiveCatalog and Flink’s connector to Hive, Flink
    > can read and write from Hive data as an alternative to Hive’s batch 
engine.”
    > Hive 是Hadoop上一个比较大的生态系统,同时hive也有自己的计算引擎(batch),Flink 不是简单地 链接 到hive,而是可以作为
    > Hive
    > 
的一个替代的计算引擎,除了读取/写入数据到Hive外,用户Hive里的SQL作业完全可以用Flink跑,这已经脱离了简单的交互的范畴了,所以会放在集成部分。
    >
    > > 。难道不使用hivecatalog就不能读取hive数据?是这个意思嘛。感觉好像意思是hive读取特别,这种情况必须使用hive
    > catalog。不可以使用jdbc catalog,但使用hive connector嘛?
    >
    > 是的,不是特别,而是HiveCatalog 就是用来管理
    > Hive中表、库、函数的元数据中心,用这个HiveCatalog也是很自然的事情。目前不可以使用JDBC
    > catalog,很长一段时间也应该不行,Jdbc catalog 里存的表都是DB里的表,不支持存放Hive的表。
    >
    >
    > 祝好
    > Leonard Xu
    
    
    
    -- 
    Best regards!
    Rui Li
    

回复